알고리즘
백준 4673번 셀프 넘버(JAVA)
박카스마시며코딩
2022. 2. 27. 23:08
https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
저는 boolean배열을 통해 해당 숫자가 셀프 넘버인지를 확인하였습니다.
셀프 넘버는 1부터 시작하여 셀프 넘버를 확인하였습니다.
문제에서는 높은 자리수 부터 더하였지만, 덧셈은 순서가 상관 없기 때문에 저는 가장 낮은 자리부터 더해나가서 구현을 조금 더 쉽게 하였습니다.
package BOJ.Bruteforce;
public class BOJ_4673 {
static final int SIZE = 10_000;
private static void checkSelfNumber(int number, boolean[] selfNumber){
int sum = number;
while(number > 0){
sum += (number % 10);
number /= 10;
}
if(sum <= SIZE){
selfNumber[sum] = true;
}
}
public static void main(String[] args) {
boolean[] selfNumber = new boolean[SIZE+1];
for(int i = 1; i <= SIZE; i++){
checkSelfNumber(i,selfNumber);
}
StringBuilder sb = new StringBuilder();
for(int i = 1; i <= SIZE; i++){
if(!selfNumber[i]){
sb.append(i+"\n");
}
}
System.out.println(sb.toString());
}
}