분해합은 어떤 자연수 N이 주어졌을 때, 생성자 숫자를 구하는 문제다.
반대로 분해합은 어떤 자연수 N과 N을 이루는 각 자리수의 합을 의미한다.
예를 들어 N = 245 라면 분해합은 245 + (2 + 4 + 5) = 256 이다.
이 문제는 숫자를 증가시키며 분해합을 계산하고, 그 계산값이 N과 일치하는 숫자를 출력해 풀이하였다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int ans = func(N);
System.out.println(ans);
}
public static int func(int N) {
for (int i = 1; i < N; i++) { // N의 생성자는 N보다 크지 않으므로 반복구간 설정에 유의한다.
int sum = i;
int num = i;
// 각 자리수를 더함.
while (num != 0) {
sum += num % 10;
num /= 10;
}
if (sum == N) {
return i;
}
}
return 0;
}
}
'Algorithm' 카테고리의 다른 글
백준 1003번 피보나치 함수 (1) | 2023.03.14 |
---|---|
백준 1010번 다리 놓기 (0) | 2023.03.14 |
백준 2798번 블랙잭 (0) | 2023.03.13 |
백준 1436번 영화감독 숌 (0) | 2023.03.11 |
백준 1934번 최소공배수 (0) | 2023.03.11 |
댓글