자릿수 더하기
2024. 9. 19. 18:00ㆍ코딩테스트 입문
https://school.programmers.co.kr/learn/courses/30/lessons/120906
문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ n ≤ 1,000,000
입출력 예
n | result |
1234 | 10 |
930211 | 16 |
입출력 예 설명
입출력 예 #1
- 1 + 2 + 3 + 4 = 10을 return합니다.
입출력 예 #2
- 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.
주어진 숫자 n의 모든 자릿수의 합을 구하는 문제입니다.
기본적인 풀이 방법은 아무래도 n이 0보다 큰 경우까지 반복하는 while문을 사용하는 겁니다.
n을 10으로 나눈 나머지를 answer에 더하고, n을 10으로 나눈 몫을 다시 n에 대입하는 것으로 n의 자릿수를 더하는 거죠.
다만 파이썬에는 map 함수가 있어서 간단하게 풀 수 있습니다.
코드와 함께 설명하겠습니다.
def solution(n):
# 문자열로 변환한 n에 int를 하나씩 매핑합니다.
# 매핑된 정수들을 모두 더합니다.
answer = sum(map(int, str(n)))
return answer
str(n)으로 n을 문자열로 변환하는데, map 함수에 의해서 모든 요소들에 int 형변환이 적용되게 됩니다.
이걸 리스트로 출력한다면 예시 1번에서는 [1, 2, 3, 4] 같은 형식이 되는데, sum을 통해서 전부 더해주면 자릿수의 합을 구할 수 있습니다.
반복문을 사용하는 방법은 아래와 같습니다.
def solution(n):
answer = 0
while n > 0:
answer += n % 10
n //= 10
return answer
answer에 n을 10으로 나눈 나머지를 저장, n에 10으로 나눈 몫을 다시 대입하는 것으로 문제를 풀 수 있습니다.
어느 방법이든 상관없지만 저는 첫 번째 방법이 파이썬스럽네요.