-
백준 4673(JAVA) - 셀프 넘버Algorithm 2022. 11. 14. 13:16728x90
오늘의 문제는 셀프 넘버 이다. 뭔가 생성자라는 느낌이 이전에 풀어봤던 문제와 유사해서 쉽게 접근할 수 있었다. 생성자를 만드는 d 함수를 하나 만들어 주고 d 함수를 boolean 배열 속에 담으면 간단하게 끝나는 문제였다.
알고리즘
1. 생성자 함수를 while(num != 0) 까지 반복문을 돌리면서 더하고 sum을 반환시키는 것으로 만들어준다.
2. boolean 배열을 10001개의 크기로 만들어준다.
3. 1~num까지의 반복문 안에서 10000개 안으로는 true를 반환하여 배열 속에 담아준다.
4. 1~num까지의 반복문 안에서 arr배열이 false가 나오면 생성자 수가 아니므로 출력시켜준다.
package selftest; public class Main_4673 { public static void main(String[] args) { final int num = 10001; boolean arr[] = new boolean[num]; for(int i = 1; i<num; i++) { int n = d(i); if(n < 10001) { arr[n] = true; } } for(int i = 1; i<num; i++) { if(!arr[i]) { System.out.println(i); } } } public static int d(int num) { int sum = num; while(num != 0) { sum += (num % 10); num /= 10; } return sum; } }
이렇게 해결할 수 있었다. 생각보다 그리 어렵진 않은 문제였고, 따로 입력을 받을 필요도 없이 단순하게 함수 하나만 만들 수 있으면 풀 수 있는 문제였다.
728x90'Algorithm' 카테고리의 다른 글
백준 2512(JAVA) - 예산 (0) 2022.11.15 백준 10814(JAVA) - 나이순 정렬 (0) 2022.11.14 백준 1789(JAVA) - 수들의 합 (0) 2022.11.10 백준 14659 - 한조서열정리하고옴ㅋㅋ(JAVA) (0) 2022.10.05 백준 2163 - 초콜릿 자르기(JAVA) (1) 2022.10.05