programming

프로그래밍 퀴즈 자릿수 더하기 파이썬 풀이 및 해설


by Kitle · 2020. 07. 20.



원본 링크 프로그래머스 : https://programmers.co.kr/learn/courses/30/lessons/12931

난이도 : Level1(max 5)


문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.


제한사항

N의 범위 : 100,000,000 이하의 자연수

입출력 예

N answer

123 6

987 24

입출력 예 설명

입출력 예 #1

문제의 예시와 같습니다.


입출력 예 #2

9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

[풀이]

def solution(number):
result = 0
for item in str(number):
result += int(item)
return result
[해설]
군더더기 없이 파이썬으로 풀기 가장 쉽고 최적화된 문제 입니다. 987이 주어졌다고 가정하는 경우 첫번째 할일은 숫자를 문자료 로 변환하는 것입니다. '987' 로 바꾸고, 한 단어씩 쪼갤 필요가 있습니다.
python for 문의 뒤에 string을 넣으면 한 단어씩 나누어 접근 할 수 있습니다. 스트링인 '9' + '8' + '7' 을 더해서는 안되며 각각을 다시 int로 변환하여 result += int(item) 결과를 저장하면 되겠습니다.

[고급 풀이]
def solution(n):
return sum([int(item) for item in str(n)])
[고급 해설]
파이썬은 이렇게 간결하게 처리 할 수도 있죠.
[ int(item) for item in str(n) ]
문장부터 보겠습니다. for 문을 이용하여 각각의 item을 int로 변환해 [] 리스트에 추가 해주었네요.
그다음 sum( [ ] ) 안에 리스트를 넣었습니다. int item들끼리 들어있을때 리스트 합을 반환해 줍니다.

[파이써닉한 풀이]
def solution(n):
return sum((map(int, str(number))))
[해설]
map은 리스트의 요소를 지정된 함수로 처리해주는 역할을 합니다. 각 스트링 문자마다 int로 처리해달라고 했으니 9,8,7 이 되겠습니다. 보통은 map 결과를 list로 변환해서 하지만 sum 으로 바로 더해줘도 가능합니다.
따라서 숫자를 스트링으로 변환하고 각각을 int로 map 해서 더해주세요.
이렇게 끝나네요.