본문 바로가기
파이썬/파이썬 알고리즘

파이썬 백준 15552번 빠른 A+B 빠르게 입력받고 출력하는 문제

by Go! Jake 2021. 3. 26.

15552번: 빠른 A+B (acmicpc.net)

 

15552번: 빠른 A+B

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

www.acmicpc.net

풀이 과정

우선 주어진 sys.stdin.readline() 함수에 대한 이해가 필요하였다.

- input()과 sys.stdin.readline()의 차이

input():

The input() function allows user input. If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.

input은 간단히 얘기하면 유저의 입력 인자를 받아들이도록 하는 함수이며, 한 줄을 읽고 *개행 없이 문자열로 변한 후 값을 리턴한다.

input은 escape character (e.g. \n, \t)를 읽을 수 없다.

*개행은 새로 행을 열어주는 줄바꿈 정도로 이해하면 될 것이다. (\n)

sys.stdin.readline(): Stdin stands for standard input which is a stream from which the program read its input data. This method is slightly different from the input() method as it also reads the escape character entered by the user. More this method also provides the parameter for the size i.e. how many characters it can read at a time.

readline은 간단히 정해진 사이즈의 파라미터를 제공하고 이를 통해 읽어 온다. 예를 들어 한번에 읽을 수 있는 글자 수 등..

문자열 출력 시 개행을 읽어올 수 있다.

import sys를 통해 sys library에서 sys.xxx 함수를 가져올 수 있도록 활용하였다.

 

import sys
a=sys.stdin.readline()
for n in range(int(a)):
    if n != int(a):
        c,d=map(int,sys.stdin.readline().split())
        print(c+d)
    else:
        c,d=map(int,sys.stdin.readline())

Point 1: import sys - sys library 가져오기.

해당 library를 가져와야 sys.xxx 함수를 사용할 수 있다.

Point 2: for문과 if문 세우기.

입력 받은 테스트 케이스 수 만큼 연산을 돌려야하며, 마지막 테스트케이스에서 종료 해 주어야 한다.

sys.stdin.readline()은 input() 함수와 마찬가지로 string 문자열을 리턴하기 때문에 int()로 감싸줘야한다.

오답 노트

import sys
a=sys.stdin.readline()
for n in range(int(a)):
    if n != int(a-1): #<- 오답 발생한 부분
        c,d=map(int,sys.stdin.readline())
        print(c+d)
    else:
        c,d=map(int,sys.stdin.readline())

어차피 숫자 개수이므로 int(a-1)또는 int(a+1)로 변환해 줄 필요가 없다. 또한 위와 같이 작성 시 TypeError: unsupported operand type(s) for -: 'str' and 'int' 발생한다. 이는 int(a-1)에서 int() 함수 내부에 a와 정수 1은 계산될 수 없기 때문이다.

 

 

댓글