3은로그

코딩테스트 2주차 - 완전탐색, 시뮬레이션 백준 풀이(2231번 분해합) 본문

코딩테스트

코딩테스트 2주차 - 완전탐색, 시뮬레이션 백준 풀이(2231번 분해합)

3은 2022. 10. 10. 21:07
728x90

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

import java.util.Scanner;

public class sum_2231 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N;
        int answer = 0;

        N = sc.nextInt();

        for(int i = 1; i < N; i++){		//생성자는 항상 N 보다 작기 때문에 N-1 까지 탐색 
            int number = i;		
            int sum = 0;

            while(number != 0) {		//각 자리수의 합 구하기
                sum += number % 10;		
                number /= 10;
            }

            if(sum + i == N) {			//각 자리수의 합 + i 가 N과 같으면 i는 N의 생성자이다
                answer = i;
                break;
            }
        }
        System.out.println(answer);
    }
}