Bronze/Bronze IV

BOJ 11720 - 숫자의 합 (Python3)

nflight11 2022. 11. 14. 17:36

오랜만에 조금 기초적인 문제를 들고 왔다.

자료형 변환에 관한 것인데, 충분히 숙지하지 않으면 탈탈 털릴 수가 있으니 주의하자.

나도 방금 숏코딩 버전을 검증해 보려고 제출했다가 두 번 틀리고 나왔다.

 

그럼 본격적으로 풀이에 돌입해 보자.


문제

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번의 풀이를 마친다.

 

그럼, 오늘도 당신의 코딩 실력이 상승하기를.

 

728x90