[Python Algorithm] 백준알고리즘 10952번 파이썬 풀이

2019. 6. 25. 02:06Python/ㄴ Algorithm

Problem


Introduction


이번 문제는 어렵지는 않다. 다만 입력받는 과정에 있어서 기존의 문제들과는 다른 함수 즉 input함수 대신 sys모듈의 sys.stdin.readline함수를 이용해서 입력받고 변수 a와 b를 더한 값이 0이 아닐 경우 출력해준다.

Solve


import sys
while True:
    a, b = sys.stdin.readline().split()
    a = int(a); b = int(b)
    if a + b == 0:
        break
    print(a + b)

완성된 코드는 위와 같다.

import sys

위에서 언급했듯 이번 문제는 input함수 대신 sys.stdin.readline함수를 이용해서 입력받아야한다.
이유를 설명하자면 해당 문제의 주어진 시간제한이 1초이기때문이다.

input함수와 sys.stdin.readline함수 모두 입력받기 위한 함수이고 input함수가 sys.stdin.readline함수보다 편리하여 많이 사용되지만 입력을 받는 방식의 차이가 있기 때문에 sys.stdin.readline함수보다 input함수가 느리다. 따라서 input함수를 사용하여 입력을 받게 될 경우 해당 문제의 제한시간인 1초를 초과하게되므로 input보다 빠른 sys.stdin.readline 함수를 사용해야하는데 이 함수가 바로 sys모듈에 내장되어있는 함수이기때문에 sys모듈을 import해주어야 사용이 가능해진다.

while True:
    a, b = sys.stdin.readline().split()
    a = int(a); b = int(b)
    if a + b == 0:
        break
    print(a + b)

우선 while문 내부를 살펴보도록 하자. (변수 a, b에 sys.stdin.readline함수를 이용하여 문자열을 입력받아 split함수로 공백을 기준으로 문자열을 잘라 저장한다. 그리고 각 변수 a, b를 int함수를 이용해 문자형 자료형에서 정수형 자료형으로 형변환하여 재정의한다. 만약 변수 a, b를 더한 값이 0일 경우에는 while문을 빠져나가 프로그램을 종료하고 이 외의 경우 변수 a, b를 더한 값을 출력한다.

Result


input값이 (1, 1), (2, 3), (3, 4), (9, 8), (5, 2), (0, 0)일 경우 입출력결과는 아래와 같다.

1 1
2
2 3
5
3 4
7
9 8
17
5 2
7
0 0