728x90
파이썬에서 입력을 받을 때, 많은 사람들이 input()
함수를 사용합니다. 하지만 알고리즘 문제나 대량의 입력을 다룰 때는 sys.stdin.readline()
이 더 효율적인 경우가 많습니다. 이 두 가지 방법의 차이점을 알아보겠습니다.
sys.stdin.readline()
vs input()
1. 속도 차이
sys.stdin.readline()
은 더 빠른 속도를 제공합니다. 이 함수는 버퍼를 사용하여 입력을 처리하기 때문에, 반복적으로 많은 양의 데이터를 입력받아야 하는 상황에서 훨씬 더 효율적입니다. 반면,input()
은 내부적으로sys.stdin.readline()
을 사용하지만, 추가적으로 개행 문자를 제거하는 작업이 포함되어 있어 상대적으로 시간이 더 소요됩니다.
2. 입력 처리 방식
sys.stdin.readline()
은 입력받은 문자열 끝에 개행 문자(\n)가 포함되어 있습니다. 따라서 필요에 따라.strip()
이나.rstrip()
메서드를 사용해 개행 문자를 제거해야 합니다.- 반대로,
input()
은 입력받은 문자열에서 개행 문자를 자동으로 제거하고 반환합니다. 이로 인해 간단하게 사용할 수 있지만, 대량의 입력을 처리할 때는 성능이 떨어질 수 있습니다.
성능 차이 예시
import sys
import time
# sys.stdin.readline() 사용
start = time.time()
for _ in range(100000):
line = sys.stdin.readline().strip()
end = time.time()
print(f'sys.stdin.readline() 사용 시간: {end - start}초')
# input() 사용
start = time.time()
for _ in range(100000):
line = input()
end = time.time()
print(f'input() 사용 시간: {end - start}초')
이 예제 코드를 통해 sys.stdin.readline()
이 input()
보다 속도 면에서 훨씬 빠르다는 것을 확인할 수 있습니다.
결론
일상적인 상황에서는 input()
을 사용하는 것이 더 편리할 수 있습니다. 그러나 입력 데이터가 많고 속도가 중요한 알고리즘 문제에서는 sys.stdin.readline()
을 사용하는 것이 더 적합합니다. 상황에 따라 두 방법을 적절히 선택하여 사용해 보세요.
728x90
'알고리즘공부(Algorithm Study) > 기본개념(Concept)' 카테고리의 다른 글
시간 제한과 메모리 제한 (0) | 2024.08.09 |
---|
댓글