알고리즘공부(Algorithm Study)/기본개념(Concept)

sys.stdin.readline() vs input() in Python

Chaany 2024. 8. 9.
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

댓글