백준 4673 - 셀프 넘버
Updated:
Java
4673 번 - 셀프 넘버
문제
접근 방법
셀프 넘버를 구하는 함수를 구현한 다음, 1부터 10000까지 함수의 입력 값으로 넣어, 방문하지 않은 수를 출력한다.
각 자리수를 구하는 방법으로, int를 string으로 string을 char Array로 변환하여 구하였는데 이 방법 보다는, while문과 나머지 연산자 ‘%’ 를 사용하여 구하는 방법이 효과적이다고 생각한다.
while(n != 0) {
sum += n % 10;
n /= 10;
}
코드
import java.io.*;
import java.util.*;
public class Main {
static boolean[] vis;
public static void main(String[] args) throws IOException {
vis = new boolean[10001];
for(int i = 1; i <= 10000; i++) {
d(i);
}
StringBuilder sb = new StringBuilder();
sb.append(1).append("\n");
for(int i = 2; i <= 10000; i++) {
if(!vis[i])
sb.append(i).append("\n");
}
System.out.println(sb);
return ;
}
static void d(int n){
int sum = n;
String num = String.valueOf(n);
char[] charNum = num.toCharArray();
for(char c : charNum) {
sum += c - '0';
}
if(sum > 10000)
return;
vis[sum] = true;
}
}