5자리 숫자 num이 주어졌을 때, 각 자릿수의 합을 구하는 방법을 알아보겠습니다. 핵심 아이디어는 숫자를 오른쪽에서 왼쪽으로 한 자리씩 추출하는 것입니다.
숫자를 10으로 나누면 나머지(% 연산)가 가장 오른쪽 자릿수가 되고, 몫(/ 연산)은 나머지 앞부분의 숫자가 됩니다. 따라서 나머지를 합에 더한 뒤, 숫자를 몫으로 갱신하는 과정을 반복하면 숫자가 결국 0이 되고, 그동안 더해진 값이 곧 전체 자릿수의 합입니다.
알고리즘 접근 방식
예를 들어 입력이 num = 58612라면, 출력은 22가 됩니다. 5 + 8 + 6 + 1 + 2 = 22이기 때문입니다.
문제를 해결하기 위해 다음 단계를 따릅니다.
- num을 58612로 초기화합니다.
- sum을 0으로 초기화합니다.
- num이 0이 아닌 동안 다음을 반복합니다.
- sum에 num을 10으로 나눈 나머지(num mod 10)를 더합니다.
- num을 10으로 나눈 몫(정수 부분)으로 갱신합니다.
- 반복이 끝나면 sum을 반환합니다.
예제 코드
아래 구현을 통해 동작 원리를 더 잘 이해할 수 있습니다.
#include <stdio.h>
int main(){
int num = 58612;
int sum = 0;
while(num != 0){
sum += num % 10;
num = num / 10;
}
printf("Digit sum: %d", sum);
}
입력
58612
출력
Digit sum: 22
코드 설명
C 언어에서 정수형 변수에 / 연산을 적용하면 소수점 이하는 버려지므로, num / 10은 마지막 자릿수를 제거한 값을 반환합니다. 또한 %(모듈로) 연산자는 나눗셈의 나머지를 구하므로, num % 10은 항상 가장 오른쪽 자릿수를 추출합니다. 이 두 연산을 조합하면 별도의 문자열 변환 없이도 숫자의 각 자릿수를 손쉽게 분리하고 합산할 수 있습니다.