언어/Python

파이썬(python) sys.stdin.readline 사용

JM Lee 2023. 8. 4. 12:03
728x90

보통 input()으로 문자열 값을 입력받지만 반복문으로 여러 줄을 입력받아야 할 때는 시간 초과 문제가 발생할 수 있다고 한다. 특히 스택 / 큐 관련 문제에서는 이렇게 여러 줄을 입력받아야 하는 경우가 많아서 시간 초과의 압박이 크다.

 

따라서 이럴 경우에는 import sys로 모듈을 불러오고 sys.stdin.readline()을 사용하는 것이 좋다.

readline()은 한 줄 단위로 입력받기 때문에 개행문자가 같이 받아지므로 주의하고, 정수로 사용할 경우 int()로 덮어줘야 한다.

input()은 값의 개행문자를 삭제시켜서 리턴한다.

# 한 개의 정수를 입력받을 때
N = int(sys.stdin.readline())

리스트와 같이 여러 개의 값을 입력받아야 할 경우에는 개행문자의 특징을 이용하여 split() 함수로 공백을 기준으로 값을 나누는 것이 좋다.

# 여러 개의 정수를 한 줄에 입력받을 때
N_list = list(map(int, sys.stdin.readline().split()))

 

이 문제를 백준 스택2 문제에서 연습해보았다.

https://www.acmicpc.net/problem/28278

 

28278번: 스택 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

곧 스택 2도 답안 올릴 예정

 

*개행문자 뜻 : https://ko.wikipedia.org/wiki/%EC%83%88%EC%A4%84_%EB%AC%B8%EC%9E%90

 

새줄 문자 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. "Hello"와 "world" 단어 사이에 추가된 새 줄 새줄 문자(newline)는 텍스트의 한 줄이 끝남을 표시하는 문자 또는 문자열이다. 개행 문자, 줄바꿈 문자(line break), EOL(end-

ko.wikipedia.org