728x90
문제
https://www.acmicpc.net/problem/2231
접근 방법
1. N이 100일때 이 분해합은 86(86+8+6) 이 됩니다.
2. 결국 분해합을 구하려면 N보다 작은 수들로 이루어져 있는데 각 자리가 최대 9까지 나올수 있으므로 총 자리수 * 9 작은 값부터 N까지 완탐방식으로 구하면 됩니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
private static BufferedReader br;
private static StringBuilder sb;
private static int N;
private static int nLength;
//입력
public static void input() throws Exception{
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
nLength = String.valueOf(N).length();
}
//과정
public static void process(){
for(int i = N-nLength*9; i < N ; i++){
int value = i;
int sum = i;
while ( value%10 != 0){
sum += value%10;
value = value/10;
}
if(sum == N){
System.out.println(i);
return;
}
}
System.out.println(0);
}
public static void main(String[] args) throws Exception{
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 2292번 : 벌집 (0) | 2024.05.02 |
---|---|
[Java] 백준 14476번 : 최대공약수 하나 빼기 (0) | 2024.04.29 |
[Java] 백준 2164번 : 카드2 (0) | 2024.04.29 |
[Java] 백준 2108번 : 통계학 (0) | 2024.04.29 |
[Java] 백준 1978번 : 소수 찾기 (0) | 2024.04.26 |