개발 공부/알고리즘 문제풀이

[백준] 15552. 빠른 A+B

5묘 2022. 7. 14. 22:59
 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net


정답

# 15552 빠른 A+B

import sys

T = int(input())

for tc in range(1, T+1):
    a, b = map(int, sys.stdin.readline().rstrip().split())
    print(a+b)


sys를 사용해 많은 양의 입력을 빠르게 받는 방법이다.
사실 이제껏 sys.stdin = open('input.txt', 'r') 이런 식으로 테스트케이스를 받을 때 사용했는데, 정작 왜 sys.stdin이 빠른지 잘 몰랐다. 그래서 오늘 이 문제 풀면서 input()과 sys.stdin의 차이를 비교한 글을 다시 한번 찾아보았다.

 

[Python] input()과 sys.stdin

sys.stdin 알고리즘 문제를 풀 때, 파이썬의 input() 은 실행시간이 느려서 자주 시간초과가 난다. 이럴때 sys 모듈의 stdin 을 사용하면 더 빠르게 input이 가능하다.. 고 하는데, 나는 input() 과 sys.stdin 의

developeryuseon.tistory.com

 

[Python] input()과 sys.stdin.readline()의 차이

버퍼(buffer) 표준 입출력 함수를 사용할 때에는 버퍼(buffer)라는 임시 메모리 공간을 사용하게 된다. input() input()은 사용자로부터 한 줄을 입력 받은 뒤 입력된 줄(line)을 문자열로 변환하여 처리한

100s.tistory.com

input()은 파이썬 내장함수이고, 입력값의 개행문자를 벗겨내 문자열로 변환해 return하는 과정을 거친다.
반면, sys.stdin은 입력만 받는 buffer을 만들어 그대로 모든 입력값을 문자열 단위로 저장했다가 출력해주는 것이므로 훨씬 빠르다. 하지만 sys.stdin.readline을 할 때 개행문자 역시 그대로 출력되기 때문에, 개행문자 없이 저장하려면 rstrip() 함수를 써줘야 한다.