파이썬 input()과 sys.stdin.readline() 뭘 사용할까?

파이썬에서 사용되는 두 가지 입력 함수, input()sys.stdin.readline()을 비교해 보며, 각각의 특징과 어떤 상황에서 더 적합한지 예시 코드와 함께 알아보겠습니다.
 
 

input() 함수

# 문자열 입력 받기
name = input('이름을 입력하세요: ')
print(f'안녕하세요, {name}님!')

# 정수형 입력 받기
age = int(input('나이를 입력하세요: '))
print(f'{name}님의 나이는 {age}세 입니다.')

특징

  • 간편하게 사용자로부터 문자열 입력을 받을 수 있음 
  • 대화형 인터페이스에 적합

 
input() 함수는 사용자로부터 입력을 쉽게 받을 수 있기 때문에 대화형 인터페이스에 적합합니다. 간단한 프로그램에서 사용자로부터 소량의 입력값을 받을 때, 사용자와 대화하는 형태의 명령줄 인터페이스에서 입력을 받을 때 사용하면 좋습니다.
 
 

sys.stdin.readline() 함수

import sys

# 문자열 입력
s = sys.stdin.readline().rstrip()

# 정수 입력
n = int(sys.stdin.readline().rstrip())

# 파이썬 리스트 입력
lst = list(map(int, sys.stdin.readline().rstrip().split()))

# 결과 출력
print(f"s = {s}")
print(f"n = {n}")
print(f"lst = {lst}")

특징

  • 대량의 입력을 처리할 때 input()보다 빠름
  • 파일 입력에도 활용 가능 
  • 유연성: 파일 입력과 표준 입력에서 모두 작동

위 코드에서는 sys.stdin.readline()을 이용해 문자열, 정수, 리스트를 입력 받은 후, 결과를 출력하였습니다. 이때, rstrip() 메소드를 이용하여 문자열 끝에 추가된 개행문자를 제거하였습니다.
 
sys.stdin.readline() 함수는 대량의 입력을 처리할 때 input함수에 비해 빠른편이고, 파일 입력에도 활용 가능하며, 파일 입력과 표준 입력에서 모두 작동하기 때문에 유연성이 있습니다. 알고리즘 문제풀이 등 효율적으로 대량의 데이터를 처리해야 할 때, 입력이 파일로부터 주어지는 경우 sys.stdin.readline()함수를 사용하는것이 좋습니다.
 
 

sys.stdin.readline() 개행(줄바꿈) 문자 제거

name = sys.stdin.readline("이름 입력: ").rstrip()
print("입력받은 값: ", name)

sys.stdin.readline() 함수는 입력값 끝의 개행문자를 포함해서 반환합니다 개행문자(₩n)를 제거 하고싶으면 rrstrip() 메소드 등을 이용하여 개행문자를 제거할 수 있습니다.
 
 

input() 함수 재정의하기

추가적으로 sys.stdin.readline()을 기존 사용하던 input()에서 사용하는 방법이 있습니다.
 

import sys
input = sys.stdin.readline().rstrip()

name = input("이름을 입력하세요: ")
age = int(input("나이를 입력하세요: "))

print(f"{name}님은 {age}살입니다.")

위 코드에서 input() 함수를 호출하면, 사실상 sys.stdin.readline()이 호출되도록 재정의된 input() 함수가 실행됩니다. 추가적으로 rstrip() 메소드를 사용하여 개행문자(\n)를 제거해주었습니다. 이렇게 처리하면 입력값을 보다 편리하게 활용할 수 있습니다.
 
 

결론

결론적으로, 대화형 인터페이스에서 간편하게 입력을 받기 위해서는 input()을 사용하고, 대량의 입력이나 파일에서 입력을 처리하는 등 성능이 중요한 상황의 경우 sys.stdin.readline()을 사용하는 것이 좋습니다.어떤걸 프로그래밍 하냐에따라서 다르겠지만 백준 문제풀이에서 기존 input()함수를 사용하여 시간이 많이소요되어 시간초과되는 코드를 sys.stdin.readline()을 사용하여 시간을 대폭줄여 문제를 해결할 수도 있습니다. 상황과 필요에 따라 적절한 입력 함수를 사용하여 여러분의 코드를 더 효율적으로 작성해보세요.
 
 
 
 
 

Top