코딩테스트 연습문제 <프로그래머스 - 자릿수 더하기, 약수 더하기 >

2026. 3. 9. 10:33TIL

자릿수 더하기

문제는 다음과 같이 < 입력받은 수의 자릿수의 합을 구하는 문제 > 이다.

 

이 문제를 해결하기 위해서는 정수의 길이를 구하는 과정이 필요하다.

 

나는 이 문제를 해결하기 위해서 나머지(%), n /= 10을 이용했다.

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

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

    return answer;
}

이렇게 하면

 

n = 123 일 때,

123 % 10
>> answer = 3
>> n /= 10 >> n = 12

12 % 10
>> answer = 5
>> n /= 10 >> n = 1

1 % 10
>> answer = 6
>> n /= 10 >> n = 0
break;

이렇게 정답을 도출해 낼 수 있다.

 


약수의 합

이 문제는 n을 입력받고 n의 약수를 전부 더한 값을 구하는 문제이다.

 

이 문제를 듣자마자 방금 풀었던 나머지 연산자(%)와, while문을 떠올렸다.

 

코드를 떠올린대로 작성해보면

int solution(int n) {
    int answer = 0;
    int i=1;
    while(n<i)
    {
        if(n%i == 0){
            answer += i;
        }
        ++i;
    }
    
    return answer;
}

다음과 같다.

 

결과값은 0이 출력되는 모습이다.

 

지금 보니 while문 안에 부호가 잘못되어 처음 반복문부터 의도한대로 실행되지 않았던 거였다.

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

int solution(int n) {
    int answer = 0;
    int i=1;
    while(n>=i)
    {
        if(n%i == 0){
            answer += i;
        }
        ++i;
    }
    
    return answer;
}

반대로 돌려서 실행해보면,

 

정답이다.

코드 자체는 맞아서 다행이다.

 


실수가 많았지만 오늘의 코딩테스트 연습도 여기서 마무리 지어보려고 한다.

내일은 자잘한 실수 없이 처음부터 완벽하게 할 수 있도록 노력해야겠다.