문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 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 함수를 적용시킨 것이다.
참고 사이트
- 파이썬 map 함수 codinglevelup.tistory.com/83
- 파이썬 print 문법 funzozo.tistory.com/6?category=845099
- 파이썬 format 함수 funzozo.tistory.com/7?category=845099