자릿수 더하기

2024. 9. 19. 18:00코딩테스트 입문

https://school.programmers.co.kr/learn/courses/30/lessons/120906

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
정수 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으로 나눈 몫을 다시 대입하는 것으로 문제를 풀 수 있습니다.

 

어느 방법이든 상관없지만 저는 첫 번째 방법이 파이썬스럽네요.

'코딩테스트 입문' 카테고리의 다른 글

문자열안에 문자열  (0) 2024.09.21
OX퀴즈  (0) 2024.09.20
n의 배수 고르기  (0) 2024.09.18
숫자 찾기  (1) 2024.09.17
배열의 유사도  (0) 2024.09.16