java
백준 2231 분해합 java 자바
MiaCoder
2024. 1. 16. 11:02
아이디어 : 각 자리수의 합을 도출 할 방법을 생각해보자, 가장 작은 수를 도출할 방법을 생각해 보자.
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
// 배열 A와 숫자 n을 입력받는다.
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int result = 0;
// 마지막 정답을 반환할 변수 만약 해당하는 수가 없다면 0을 반환.
for (int i = 1; i < N; i++) {
//1부터 N까지 숫자 중 각 자리수를 모두 더하고 해당 i값도 더했을 때 N과 같은지 비교한다.
int sum = 0;
// 각 자리수를 더한값을 가지는 변수
int num = i;
i값을 while문에서 사용하기 위한 변수
while (num != 0) {
sum = sum + num % 10;
num = num / 10;
// 숫자의 끝자리 부터 %의 특성을 이용하여 sum에 더한다.
// 더한 후 10으로 나누어 남은 자리수도 구한다.
}
if (sum + i == N) {
//분해합의 조건을 충족한다면
result = i;
break; // 종료
}
}
System.out.print(result);
sc.close();
}
}