본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 15552번(파이썬)

by 올커 2022. 9. 17.

 

백준 15552번_파이썬 알고리즘

Q. 백준 15552. 빠른 A+B

아래를 참고하여 두 정수 A, B의 합 A+B를 출력하는 프로그램을 작성한다.

(for문을 사용할 때 주의할 점으로, 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다. Python 사용시 input 대신 sys.stdin.readline을 사용할 수 있으며, 사용할 맨 끝의 개행문자(\n)까지 입력되므로, 문자열 저장시 별도의 처리가 필요하다.)
(1) 입력 : 첫째 줄에 테스트 케이스의 갯수 T를 사용자로부터 입력받는다. (T ≤ 1,000,000)
               둘째줄 부터 T+1줄까지는 합산할 두 정수 A, B가 각각 주어진다.(1 ≤ A, B ≤ 1,000)
(2) 출력 : 각 테스트 케이스마다의 두 정수 A, B의 합 A+B를 출력한다.


A. 풀이

 

# Q 백준 15552. 빠른 A+B
# input 대신 sys.stdin.readline
# 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
import sys
num = int(sys.stdin.readline())

for i in range(num):
    a, b = map(int, sys.stdin.readline().split())
    print(a+b)

1) 변수 선언부

 - input 대신에 사용할 'sys.stdin.readline()'에 유의하여 코드를 입력한다.

 - 사실 input()과 용법은 거의 동일하다고 봐도 무방하다. 대신 초기에 import를 통해 sys 모듈을 가져와야 하고, 개행문자 처리를 위해 int(), 또는 map(int, sys.stdin.readline().split())을 사용해야 하지만, input()을 사용하는 경우에도 정수처리를 위해 int를 사용하기 때문에 크게 바뀌는 것은 없다.

 

2) 반복문 (for문)

 - 입력받은 테스트 케이스 num을 범위로 잡는다. (실제 i는 0부터 num-1까지 반복되지만 전체 갯수는 num의 갯수와 동일하다)

 - 입력받을 두 수 a, b는 공백을 사이에 두고 입력받아야 하므로, 'map(int, sys.stdin.readline().split())'을 사용해서 각 숫자를 구분해주고 이를 출력하기 위해 'print(a+b)'를 출력하여 각 테스트 케이스를 마무리한다.

 


R. 리뷰

 - 반복문으로 여러 줄을 입력받을 경우, 파이썬 sys 모듈을 import하여 sys.stdin.readline()을 통해 값을 입력받음으로써 시간초과를 예방한다. (*sys : 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈)
 - 주의할 점 : sys.stdin.readline()는 한 줄 단위로 입력받으므로 개행문자(\n)가 포함된다. 그렇기 때문에 형변환(int)을 하거나, .rstrip()을 통해 개행문자 처리가 필요하다.

 - 백준 알고리즘 2438번 문제를 다루었던 글에서 해당 함수를 언급했기 때문에 참고해도 좋을 듯 하다.

   ▶ 2022.09.14 - 백준 알고리즘 2438번, 2439번(파이썬)

반응형

댓글