본문 바로가기
Algorithm/Programmers

[Algorithm] 프로그래머스 - 자릿수 더하기

by 홍월이_ 2022. 12. 22.

시작하며...

모든 알고리즘 문제 풀이는 제가 직접 짜서 정답을 맞춘 결과만을 공유합니다.

마지막 'More Solution'은 다른 정답자들 풀이 중 생각지 못했던 부분들이나 좋게 느껴진 풀이법 몇개를 가져와서 공유하였습니다.

 

[Level 1] 자릿수 더하기

 

프로그래머스

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

programmers.co.kr

 

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항

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

 

입출력 예

입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

 

My Solution

def solution(n):
    # answer = 0
    # for i in list(str(n)):
    #     answer += int(i)
    # return answer
    return sum([int(i) for i in str(n)])

주석문을 먼저 작성하고 List Comprehension으로 변환했다. 아직 List Comprehension이 익숙하지 않아서 바로 구조가 나오질 않는다...

자연수 n 을 문자열로 바꾼 후 리스트로 바꾸면 자릿수가 따로 리스트의 각 인덱스에 담기게 된다. 그것을 반복문으로 돌려서 하나씩 합쳐주도록 구현하였다.

List Comprehension으로는 문자열 자체를 for문을 돌려서 int 타입으로 변환 후 리스트에 담고 Sum 함수를 이용해 자릿수 합을 구하였다.

 

More Solution

def sum_digit(number):
    if number < 10:
        return number;
    return (number % 10) + sum_digit(number // 10)

재귀구조가 아직 낯설고 신기해서 가져와보았다.

자릿수가 한자리면 바로 리턴을 하고 자릿수가 더 있을 경우는 10씩 나누어주면서 재귀구조로 구현된 풀이이다.

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

댓글