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
'Study > BaekJoon' 카테고리의 다른 글
[백준 자바JAVA] 2839번 - 설탕 배달 (0) | 2023.05.26 |
---|---|
[백준 자바JAVA] 2720번 - 세탁소 사장 동혁 (2) | 2023.05.26 |
[백준 자바JAVA] 10250번 - ACM호텔 (0) | 2023.03.04 |
[백준 자바JAVA] 4153번 - 직각삼각형 (0) | 2023.02.24 |
[백준 자바JAVA] 1085번 - 직사각형에서 탈출 (0) | 2023.02.24 |