[C++]백준 2231 분해합

칼든개구리·2025년 3월 28일
0
post-thumbnail

코드

#include <iostream>

using namespace std;

int getDecompositionSum(int num) {
    int sum = num;
    while (num > 0) {
        sum += num % 10;
        num /= 10;
    }
    return sum;
}

int main() {
    int N;
    cin >> N;
    
    for (int i = 1; i < N; i++) {
        if (getDecompositionSum(i) == N) {
            cout << i << endl;
            return 0;
        }
    }

    cout << 0 << endl;
    return 0;
}

코드 설명

#include <iostream> // 입출력을 위한 헤더파일
using namespace std; // std:: 생략 가능하게 해줌

// 특정 수 num의 분해합을 구하는 함수
int getDecompositionSum(int num) {
    int sum = num; // 시작은 자기 자신부터
    while (num > 0) { // 자릿수 하나씩 더함
        sum += num % 10; // 일의 자리 더함
        num /= 10;       // 다음 자릿수로 이동
    }
    return sum; // 분해합 반환
}

int main() {
    int N;
    cin >> N; // 목표 숫자 입력 받음

    // 가능한 모든 생성자 후보를 탐색 (1부터 N-1까지)
    for (int i = 1; i < N; i++) {
        if (getDecompositionSum(i) == N) { // 분해합이 N이면
            cout << i << endl; // 생성자 출력
            return 0;          // 프로그램 종료 (가장 작은 생성자 찾았으므로)
        }
    }

    // 생성자가 없는 경우
    cout << 0 << endl;
    return 0;
}
profile
메타쏭이

0개의 댓글