BOJ 11720 - 숫자의 합 (Python3)
오랜만에 조금 기초적인 문제를 들고 왔다.
자료형 변환에 관한 것인데, 충분히 숙지하지 않으면 탈탈 털릴 수가 있으니 주의하자.
나도 방금 숏코딩 버전을 검증해 보려고 제출했다가 두 번 틀리고 나왔다.
그럼 본격적으로 풀이에 돌입해 보자.
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다.
예제 입력)
# 예제 입력 1
1
1
# 예제 입력 2
5
54321
# 예제 입력 3
25
7000000000000000000000000
# 예제 입력 4
11
10987654321
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
예제 출력)
# 예제 출력 1
1
# 예제 출력 2
15
# 예제 출력 3
7
# 예제 출력 4
46
내 코드
def sol(n):
N=[int(i) for i in n]
return sum(N)
a = input()
print(sol(input()))
이게 맨 처음 낸 버전. 지금은 map(int, iter)을 쓸 줄 알아서 더 세련된 코드를 쓸 줄 알지만, 저걸 냈던 1주일 전만 하더라도 문자열 → 정수 변환을 반복문을 통해서 해결했었다.
그렇다. 바로 위 코드처럼.
이번에는 입력이 공백으로 구별되지 않아서 map(int, input().split())을 사용할 수 없다. 대신 "1234"를 [1, 2, 3, 4]로 바꿔 줄 수는 있는데, 그게 바로 sol(n)로 주어진 함수의 첫 줄이다.
for i in n, 즉 문자열의 각 자리마다 int(i)를 반환한 후 배열로 묶은 것이 바로 N이다. sum(N)은 따라서 입력된 문자열의 각 자릿수 합이 될 테고, 그것을 뱉는 함수가 sol(n).
첫 번째 입력되는 수는 사실 풀이에 아무 짝에도 쓸모 없으니, 어디에도 안 쓸 a를 선언해서 첫 번째 변수를 날려 주는 작업이 필요하다. 그리고 두 번째 입력되는 숫자열의 sol 값을 반환하면 끝.
이로서 11720번의 풀이를 마친다.