잉여의 IT
[백준 2231번: 분해합] 자바 문제풀이 본문
브루트 포스 알고리즘 문제이다.
주어진 자연수 N이 최대 1000000까지이므로 이를 고려하여 각 자릿수를 구하는 함수를 작성했다.
분해합은 자신과 분해된 자릿수들의 합이므로 어차피 생성자는 주어진 분해합인 N보다 작을 수 밖에 없다.
따라서 1부터 N미만까지 차례대로 생성자가 될 수 있을지 대조했을 때, 처음으로 생성자가 되는 수가 가장 작은 생성자가 될 것이다.
import java.util.Scanner;
public class Main {
int DisassembleSum(int N) {
for(int i=0; i<N; i++) {
int m1 = i/1000000;
int m2 = (i-m1*1000000)/100000;
int m3 = (i-m1*1000000-m2*100000)/10000;
int m4 = (i-m1*1000000-m2*100000-m3*10000)/1000;
int m5 = (i-m1*1000000-m2*100000-m3*10000-m4*1000)/100;
int m6 = (i-m1*1000000-m2*100000-m3*10000-m4*1000-m5*100)/10;
int m7 = i-m1*1000000-m2*100000-m3*10000-m4*1000-m5*100-m6*10;
int sum = i + m1+m2+m3+m4+m5+m6+m7;
if(sum==N)
return i;
}
return 0;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Main Main = new Main();
int N = scanner.nextInt();
System.out.println(Main.DisassembleSum(N));
scanner.close();
}
}
'백준 풀이' 카테고리의 다른 글
[백준 1436번: 영화감독 숌] 자바 문제풀이 (0) | 2022.07.21 |
---|---|
[백준 1018번: 체스판 다시 칠하기] 자바 문제풀이 (0) | 2022.07.21 |
[백준 7568번: 덩치] 자바 문제풀이 (0) | 2022.07.19 |
[백준 2798번: 블랙잭]자바 문제풀이 (0) | 2022.07.19 |
[백준 11729번: 하노이 탑 이동 순서] 자바/C 언어 문제풀이 (0) | 2022.07.11 |
Comments