728x90

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

 

15552번: 빠른 A+B

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

www.acmicpc.net

풀이)

T = int(input())for i in range(T):
a, b = map(int, input().split())
print(a+b)

이렇게 풀면 답은 도출이 가능하다. 문제가 원하는 답이 아니여서 타임 오류가 난다. 그래서 문제가 원하는 풀이를 하면 아래의 풀이가 된다.

import sys #모듈을 읽어 들이겠다.

T=int(sys.stdin.readline()) #T=int(input())도 가능함
for i in range(T):
    a, b=map(int, sys.stdin.readline().split())
    print(a+b)

 이 풀이를 이해하기 위해서는 백준 15552번의 문제에 대한 설명을 인용을 해보자면,

Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.

sys모듈은 시스템과 관련된 정보를 가지고 있는 모듈로, sys을 import 해야 sys.stdin.readline을 사용할(읽어들일) 수 있기 때문에 꼭 필요하다.

그 다음은 위에처럼 input()자리에 대신해서 sys.stdin.readline을 넣어주면 된다.

위의 인용처럼 sys.stdin.readline은 공백까지 문자열에 포함시키기 때문에, ↑위에 코드는 공백으로 인한 오류가 발생할 확률이 높다.

그러므로, ↓아래의 코드처럼

import sys #모듈을 읽어 들이겠다.

T=int(sys.stdin.readline()) #T=int(input())도 가능함
for i in range(T):
    a, b=map(int, sys.stdin.readline().rstrip().split())
    print(a+b)

오른쪽끝의 문자만 삭제해주는 rstrip()을 통해 공백을 지워줄 수 있도록 만들어 주는 것이 좋다.

728x90