코딩테스트/백준

[백준-자바] 2231번 분해합 / 2022.02.10

강원대목동녀 2022. 2. 10. 10:34
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 Main {
    public static void main(String args[]) {
    	Scanner sc = new Scanner(System.in);
    	int N = sc.nextInt();
    	int number = 0; // 생성자를 찾기 위한 변수
    	while(number < N) { // 생성자는 N보다 작아야함 
    		number++;
    		int hap = number; // 분해합을 구하기 위한 변수 number를 대입해서 선언함
    		String num = Integer.toString(number); // 각 자리의 수를 더하기 위해 String으로 변환
    		for(int i=0; i<num.length(); i++) { 
    			hap += num.charAt(i) - '0'; // 각 자리 수 만큼 hap에 더해줌
    		} 
    		if(hap == N) { // 분해합이 N과 같다면 number는 생성자이므로
    			System.out.println(number); // 출력하고 종료
    			return;
    		}
    	}
    	System.out.println(0); // 위의 while문에서 종료가 안되면 생성자가 없는 것이므로 0 출력
    	
    }
}

 

풀이 : 

N = 256, number = 245 라면,

1) int hap = 245

2) String num = "245"

3) hap += 2 -> hap += 4 -> hap += 5 --> hap = 256

4) N == hap (256 == 256) --> number 출력

 

728x90