코딩테스트 연습문제 <프로그래머스 - 자릿수 더하기, 약수 더하기 >
2026. 3. 9. 10:33ㆍTIL
자릿수 더하기

문제는 다음과 같이 < 입력받은 수의 자릿수의 합을 구하는 문제 > 이다.
이 문제를 해결하기 위해서는 정수의 길이를 구하는 과정이 필요하다.
나는 이 문제를 해결하기 위해서 나머지(%), 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;
}
반대로 돌려서 실행해보면,

정답이다.
코드 자체는 맞아서 다행이다.
실수가 많았지만 오늘의 코딩테스트 연습도 여기서 마무리 지어보려고 한다.
내일은 자잘한 실수 없이 처음부터 완벽하게 할 수 있도록 노력해야겠다.
'TIL' 카테고리의 다른 글
| C++ < Template(템플릿) > (0) | 2026.03.10 |
|---|---|
| C++ < 자원 관리(스택 메모리, 힙 메모리, 스마트 포인터) > (0) | 2026.03.09 |
| C++ < 상속, 다형성 > (0) | 2026.03.06 |
| C++ < Class 개념 > (0) | 2026.03.05 |
| 프로그래머스 C문제 풀이 (입문) (0) | 2026.03.05 |