코딩테스트/백준
[백준-자바] 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