자릿수 더하기

문제 링크

자릿수 더하기

분석

숫자의 자릿수를 하나씩 분리해서 더하는 문제입니다.

일의 자리를 분리하고, 일의 자리를 없애는 방식으로 진행하면됩니다.
분리는 나머지 연산자, 없애는 것은 나누기 연산자를 사용하면 됩니다.

다른 방법으로는 자연수 N을 문자열로 바꾸고, 각 자릿수를 더하는 방식으로 해결할 수 있습니다.

풀이

일의 자릿수를 분리하고, 없애는 방식은 다음과 같습니다.

int solution(int n)
{
    int answer = 0;
    
    while (n > 0)
    {
        answer += n % 10;
        n /= 10;
    }

    return answer;
}

문자열로 변경하고, 각 자릿수를 더하는 방법은 다음과 같습니다.

#include <string>

int solution(int n)
{
    int answer = 0;

    std::string num = std::to_string(n);

    for (int i = 0; i < num.size(); ++i)
    {
        answer += num[i] - '0';
    }

    return answer;
}

더할 때 n은 문자열이므로 형변환 해야합니다.
num[i] - '0'는 형변환을 하는 코드입니다.
static_cast<int>(num[i]) - static_cast<int>('0')를 사용해도 무방합니다.

성능 요약

일의 자릿수를 분리하고, 없애는 방식의 성능입니다.

테스트 1 〉 통과 (0.01ms, 4.18MB)
테스트 2 〉 통과 (0.01ms, 4.21MB)
테스트 3 〉 통과 (0.01ms, 3.67MB)
테스트 4 〉 통과 (0.01ms, 4.21MB)
테스트 5 〉 통과 (0.01ms, 4.27MB)
테스트 6 〉 통과 (0.01ms, 4.13MB)
테스트 7 〉 통과 (0.01ms, 4.18MB)
테스트 8 〉 통과 (0.01ms, 4.14MB)
테스트 9 〉 통과 (0.01ms, 4.21MB)
테스트 10 〉 통과 (0.01ms, 4.13MB)
테스트 11 〉 통과 (0.01ms, 4.14MB)
테스트 12 〉 통과 (0.01ms, 4.16MB)
테스트 13 〉 통과 (0.01ms, 3.66MB)
테스트 14 〉 통과 (0.01ms, 4.13MB)
테스트 15 〉 통과 (0.01ms, 4.13MB)
테스트 16 〉 통과 (0.01ms, 4.2MB)
테스트 17 〉 통과 (0.01ms, 4.12MB)
테스트 18 〉 통과 (0.01ms, 4.21MB)
테스트 19 〉 통과 (0.01ms, 4.2MB)
테스트 20 〉 통과 (0.01ms, 3.68MB)
테스트 21 〉 통과 (0.01ms, 4MB)


문자열로 변경하고, 각 자릿수를 더하는 방법의 성능입니다.

테스트 1 〉 통과 (0.01ms, 4.01MB)
테스트 2 〉 통과 (0.01ms, 4.14MB)
테스트 3 〉 통과 (0.01ms, 3.73MB)
테스트 4 〉 통과 (0.01ms, 4.13MB)
테스트 5 〉 통과 (0.01ms, 4.19MB)
테스트 6 〉 통과 (0.01ms, 3.71MB)
테스트 7 〉 통과 (0.01ms, 4.2MB)
테스트 8 〉 통과 (0.01ms, 4.19MB)
테스트 9 〉 통과 (0.02ms, 4.21MB)
테스트 10 〉 통과 (0.01ms, 3.76MB)
테스트 11 〉 통과 (0.01ms, 4.16MB)
테스트 12 〉 통과 (0.01ms, 4.13MB)
테스트 13 〉 통과 (0.01ms, 4.21MB)
테스트 14 〉 통과 (0.01ms, 4.22MB)
테스트 15 〉 통과 (0.01ms, 4.19MB)
테스트 16 〉 통과 (0.01ms, 4.18MB)
테스트 17 〉 통과 (0.01ms, 4.26MB)
테스트 18 〉 통과 (0.01ms, 4.13MB)
테스트 19 〉 통과 (0.01ms, 3.76MB)
테스트 20 〉 통과 (0.01ms, 3.62MB)
테스트 21 〉 통과 (0.01ms, 3.68MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기