본문 바로가기
CS Study

파이썬 (Python) - sys.stdin.readline() 과 input(), input()이 시간 초과의 원인

by 이병견 2023. 4. 13.

1) sys.stdin.readline()이란?

system에 정의된 함수로, import sys 를 통해 사용할 수 있다.

import sys
example=int(sys.stdin.readline())

한 줄 전체를 입력으로 받으며, 따라서 Enter의 입력으로 입력 단위가 구분된다.

+)더해서, 개행으로 인해 입력 단위가 구분된다는 의미이기 때문에 개행 문자를 함께 받는다. 제거하고 싶다면 input()에서와 마찬가지로 개행문자를 제거하면 된다.

 

한 가지 주의할 점은, 그냥 sys.stdin.readline()만 사용했을 경우에는 자동으로 문자열 처리되기 때문에 자료형을 앞에 명시해주어야 한다.

 

물론 split()을 사용할 수도 있다.

example2,example3=sys.stdin.readline().split()

 

2) input()이란?

파이썬을 처음 시작할 때 입력 함수로 가장 많이 쓰는 함수이다. 위의 sys.stdin.readline()과 마찬가지로 문자열 형태로 값을 입력받는다. split 함수의 사용도 1)과 마찬가지로 적용된다. 자료형의 변환 역시 1)과 같다.

example_py=int(input().split())

int 형변환+split() 적용까지 하면 위의 형식처럼 된다.

 

3) sys.stdin.readline()과 input()의 차이는?

1)에서 언급했듯, sys.stdin.readline()은 개행문자를 포함한 꼴로 저장된다. 반면, input()은 이를 제거하고 저장하는데, 따라서 입력된 개행문자를 제거하는 절차를 거친 뒤 값을 저장하게 된다. 따라서 전자에 비해 step이 하나 더 있다고 생각하면 된다. 그래서 적은 수의 입력을 받을 때는 input()을 사용해도 큰 문제가 없지만, 할당된 시간 자원이 제한적이라든가, 많은 값들을 반복적으로 받는 작업 (가령 while true: 동안 무한에 가깝게 실행) 을 할 때에는 input()을 사용하면 시간이 초과된다.

 

그러므로 long coding을 하게 될 때는 sys.stdin.readline()을 주로 사용하도록 하자!

'CS Study' 카테고리의 다른 글

C++ 기초문법 3) 조건문  (0) 2023.05.14
C++ 기초 - 입력 및 사칙연산  (0) 2023.05.07
C++ 기초 : 출력  (0) 2023.05.07
파이썬 자주 쓰는 함수 정리  (0) 2023.04.02
논리설계) Signed Binary Number  (0) 2023.03.19