좌충우돌 개발자의 길

백준 알고리즘 | 15552번 (10950번 변형문제) | 파이썬 본문

CODING TEST/백준

백준 알고리즘 | 15552번 (10950번 변형문제) | 파이썬

sustronaut 2021. 7. 2. 08:32

15552번 (10950번 변형문제)

  • 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
  • Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
import sys

n = int(input())

i = 0

for i in range(0, n):
    a, b = sys.stdin.readline().rsplit()
    a = int(a)
    b = int(b)
    print(a+b)
    i = i+1

 

새롭게 배운 것

 

sys.stdin.readline()

sys.stdin.readline()은 사용자의 입력을 받지만 개행 문자도 입력을 받을 수 있다. 또한 입력 크기에 제한을 줌으로써 한번에 읽어들일 문자의 수를 정할 수 있다.

빠르게 입력받을 수 있다는 장점 (실행속도 우위)

  • 특징

input()과 가장 큰 차이점은 input()내장 함수로 취급되는 반면  sys  에 속하는 메소드들은 file object로 취급된다. 즉, 사용자의 입력만을 받는 buffer를 하나 만들어 그 buffer에서 읽어들이는 것이다.

input()은 더 이상 입력이 없는데도 수행될 경우 EOFerror를 뱉어내는 반면 sys.stdin.readline()은 빈 문자열을 반환한다. 에러에 안전하다.

rsplit() 을 이용해서 여러 개의 입력을 받을 수도 있다.