문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net/problem/11021

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 “Case #x: “를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.

과정

앞으로 파이썬을 사용해서 알고리즘 공부를 하기로 했다. 이렇게 마음을 먹고 풀게 된 첫 문제였는데 처음부터 헤맸다. 아래는 내가 처음 작성한 코드이다.

cnt = int(input())
for i in range(cnt):
    a, b = input().split()
    print("Case #" + (i+1) + ": " + (int(a)+int(b)))

이전 10953번 문제에서 “Case #x: “만 붙이면 해결될 줄 알았는데 계속 TypeError가 떴다.

어느 부분이 문제인지 모르겠어서 Jupyter를 켜서 이것 저것 테스트 해본 결과 print에서 ‘+’는 string 끼리만 연결된다는 것을 알았다. i랑 a+b는 integer라서 TypeError가 뜬 것이었다. ㅎ…;;

너무 기초적인 부분인데 헤매서 내 스스로 쪽팔렸다. 하..

최종 코드

아래와 같이 코드를 변경하니 제대로 작동했다.

cnt = int(input())
for i in range(1, cnt+1):
    a, b = input().split()
    print("Case #%d: %d" %(i,(int(a)+int(b))))

Enhanced

cnt = int(input())

for i in range(1, cnt+1):
    a, b = map(int, input().split())
    printm(f'Case #{i}: {a+b}')

검색해보니 많은 사람들이 map 함수를 통해 문제를 해결했다. 파이썬으로는 map을 써본적이 없어서 이것도 찾아봤다.

map 함수는 각 요소들에 어떤 함수를 각각 적용시키는 경우에 사용하는 것이라고 한다. 위의 경우에는 입력받은 a와 b를 문자에서 정수로 바꾸기 위해 map 함수를 사용하여 a와 b에 각각 int 함수를 적용시킨 것이다.

참고 사이트