백준 15552번 빠른 A+B
문제
테스트 케이스 수 T(최대 1,000,000)가 주어지고, 이어서 T줄에 걸쳐 두 정수 A와 B가 주어진다(1 이상 1,000 이하). 각 케이스마다 A+B를 한 줄에 하나씩 출력한다. 입출력이 많아서 느린 입력 방식을 쓰면 시간 초과가 난다.
풀이
sys 모듈을 불러와 input() 대신 sys.stdin.readline()으로 한 줄씩 읽는다. 이 방식은 줄 끝의 개행 문자까지 함께 읽어 오므로 rstrip()으로 지운 뒤 split()으로 나눈다. 앞 문제에서 쓰던 map(int, ...) 식에 sys.stdin.readline()만 바꿔 끼웠다.
import sys
T = int(input())
for _ in range(T):
a,b = map(int, sys.stdin.readline().rstrip().split())
print(a + b)제출은 통과했다. 다만 Jupyter에서는 같은 코드가 계속 오류가 나서 한 시간 넘게 원인을 찾지 못했다. Jupyter의 입력 방식이 일반 터미널과 달라서 sys.stdin.readline()이 기대대로 동작하지 않는 것으로 보이며, 원인은 확인하지 못했다.
짚고 갈 점
- 여기서는
split()이 개행 문자도 공백으로 취급해 지워 주기 때문에rstrip()이 없어도 결과는 같다. 문자열을 그대로 저장할 때rstrip()이 필요하다. - 반복문 안에서 쓰지 않는 변수는 관례적으로
_로 쓴다.