[연습문제] 자릿수 더하기

2024. 11. 13. 18:00입문문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명
자연수 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 하면 됩니다.

자연수 N이 주어졌을 때, 각각의 자릿수를 더하는 문제입니다.

보통 이런 문제들은 반복문을 사용해 10으로 나눈 몫과 나머지를 활용하라는 의도입니다.

저도 C는 의도대로 풀고, 파이썬은 숫자 -> 문자열 -> 숫자로 교체하여 더하는 방법으로 문제를 풀어볼 예정입니다.

 

정답 코드를 작성해보겠습니다.

 

1. C

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int answer = 0;
    // n이 0보다 클 때까지 반복합니다.
    while (n > 0) {
        // 10으로 나눈 나머지를 더합니다.
        answer += (n % 10);
        // n을 10으로 나눈 몫으로 재설정합니다.
        n /= 10;
    }
    return answer;
}

 

심플하게 while 문을 사용해 자연수 범위일 때 더하는 방법을 사용했습니다.

 

2. 파이썬

def solution(n):
    # n을 문자열로 변환합니다.
    # 변환된 문자열에서 하나씩 숫자로 변환합니다.
    # 변환된 숫자들을 더합니다.
    answer = sum(int(c) for c in str(n))
    return answer

 

숫자를 문자열로 변환한 뒤, 해당 문자열을 하나씩 숫자로 변환하여 암묵적인 리스트로 구현합니다.

해당 리스트에 sum 함수를 적용하는 것으로 자릿수를 더할 수 있습니다.