Study/BaekJoon
[백준 자바JAVA] 2231번 - 분해합
도톤팽이
2023. 3. 4. 16:29
728x90
https://www.acmicpc.net/problem/2231
● 문제
분해합이란? 주어진 수와 주어진 수의 각자리를 더해서 나온 값이다.
예를들어 198의 분해합은 198 + 1 + 9 + 8 = 216이 된다.
● 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int result = 0;
for(int i = 0; i < n; i++)
{
int sum = 0;
int num = i;
while(num != 0) {
sum += num % 10;
num = num / 10;
}
if(sum + i == n) {
result = i;
break;
}
}
System.out.println(result);
}
}
해당 문제를 보고 분해합에관한 공식이 따로 있나 찾아보았지만 나오는게 없어 1부터 입력한 값 n까지 모든 수를 비교해준 뒤 나오는 값 중 최솟값을 출력을 하였다.
먼저 자연수N을 입력을 받은 뒤
for문을 이용하여 N까지 모든 숫자를 분해합을 돌려주었다.
while문을 이용하여 각자리 숫자를 더한 뒤 sum에 저장해 주고 sum과 i를 더해준 값이 n 과 같을 경우 그 숫자는 생성자가 된다.
이를 비교하여 가장 작은 생성자를 출력해준다.
728x90