Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 숫자를 한 자리 수가 될 때까지 자릿수 합 구하기

개요

이 튜토리얼에서는 주어진 숫자의 각 자릿수를 계속 더하여 최종적으로 한 자리 수가 될 때까지 반복하는 프로그램을 작성해 보겠습니다. 먼저 예제를 통해 문제를 이해해 보겠습니다.

입력 − 4543

출력 − 7

문제 해결 접근 방법

이 문제는 다음 단계를 통해 해결할 수 있습니다.

  • 숫자를 초기화합니다.
  • 합계 변수를 0으로 초기화합니다.
  • 합이 9 이하가 될 때까지 반복하며, 모듈로(%) 연산자를 사용해 각 자릿수를 합계에 더합니다.
  • 최종 합계를 출력합니다.

예제 코드

실제 코드를 살펴보겠습니다.

#include <bits/stdc++.h>
using namespace std;
void findTheSingleDigit(int n) {
   int sum = 0;
   while(n > 0 || sum > 9) {
      if(n == 0) {
         n = sum;
         sum = 0;
      }
      sum += n % 10;
      n /= 10;
   }
   cout << sum << endl;
}
int main() {
   int n = 4543;
   findTheSingleDigit(n);
   return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

7

더 간단한 방법: 디지털 루트 공식 활용

사실 이 문제는 훨씬 간단한 방법으로도 해결할 수 있습니다. 바로 디지털 루트(Digital Root)의 수학적 성질을 이용하는 것입니다.

  • 주어진 숫자가 0이라면 결과는 0입니다.
  • 숫자가 9로 나누어떨어진다면 결과는 9입니다.
  • 그 외의 경우에는 n % 9가 곧 답이 됩니다.

이 방법은 반복문 없이 상수 시간(O(1)) 안에 답을 구할 수 있어 매우 효율적입니다.

예제 코드

코드로 확인해 보겠습니다.

#include <bits/stdc++.h>
using namespace std;
void findTheSingleDigit(int n) {
   if (n == 0) {
      cout << 0;
   }
   else if (n % 9 == 0) {
      cout << 9 << endl;
   }
   else {
      cout << n % 9 << endl;
   }
}
int main() {
   int n = 4543;
   findTheSingleDigit(n);
   return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

7

마무리

이번 튜토리얼에서는 C++로 숫자를 한 자리 수가 될 때까지 자릿수를 더하는 두 가지 방법을 알아보았습니다. 반복문을 사용하는 직관적인 방법과 9의 배수 성질을 활용한 수학적 방법 모두 코딩 테스트나 실무에서 유용하게 활용될 수 있습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.