본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다.
입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
이를 위해, Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다.
input vs. sys.stdin.readline
차이점 1
sys.stdin.readline을 사용하는 경우, 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우, .rstrip()을 추가로 해 주는 것이 좋다.
# 입력으로 abc를 치고 엔터를 친 경우,
s = input() # 이 때, s는 "abc"
len(s) # 3
s = sys.stdin.readline() #이 때, s는 "abc\n"
len(s) # 4
# sys.stdin.readline()를 쓸 때, rstrip()으로 개행문자 버리기
input = lambda: sys.stdin.readline().rstrip() # 이러면, abc를 input으로 받아도, input에는 'abc\n'가 아니라 'abc'가 저장된다.
# Example
# input 사용할 때
t = 5
inp = [map(int, input().split()) for _ in range(t)]
for _inp in inp:
print(sum(_inp))
# sys 사용할 때 _ 개행 문자 처리 등 번거롭지만, 입력량 많을 때 훨씬 빠름
import sys
t = 5
inp = [list(map(int, sys.stdin.readline().rstrip().split())) for _ in range(t)]
for _inp in inp:
print(sum(_inp))
차이점 2
input은 입력의 끝 (EOF)을 만났을 때 EOFError를 raise하지만sys.stdin.readline은 에러를 발생시키지 않고 정상적으로 빈 문자열을 반환한다.
따라서, input 에서 사용하는 예외처리를 sys.stdin.readline에서 사용하면 에러가 발생할 수 있다.
참고
'Python > 알고리즘' 카테고리의 다른 글
| 백준 14501 | 퇴사 최대 수익 (1) | 2025.07.29 |
|---|---|
| 백준 14499 | 주사위 굴리기 (6) | 2025.07.28 |
| print(end=" ") 사용해서 한 줄에 출력하기 (0) | 2025.07.04 |
| True, False를 쉽게 1과 0으로 프린트하기 (0) | 2025.07.04 |