https://www.acmicpc.net/problem/4673
[난이도]
- Silver 5
[알고리즘]
- 부르트 포스
[코드]
import java.io.*;
import java.util.*;
public class Main {
static boolean[] check = new boolean[10036];// selfNumber(9999) = 9999+9+9+9+9=10035가 최대값
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = 1;
while (n <= 10000) {
if (!check[n]) {
bw.write(n + "\n");
}
selfNumber(n);
n++;
}
bw.flush();
bw.close();
br.close();
}
static void selfNumber(int n) {
int sum = 0;
sum += n;
String str = String.valueOf(n);
for (int i = 0; i < str.length(); i++) {
sum += str.charAt(i) - '0';
}
check[sum] = true;
}
}
[풀이]
1. 1부터 시작해 check[n] 이 false일 경우 해당 숫자를 출력한다. check[n] 이 true일 경우에는 출력하지 않는다.
2. selfNumber(n)을 수행후 나온결과의 값을 sum이라 할 때, check[sum] = true 해준다.
3. n이 10000을 넘어갈 경우 반복문 탈출 후 출력
'코딩테스트' 카테고리의 다른 글
백준 17198: Bucket Brigade[JAVA] (0) | 2024.04.24 |
---|---|
백준 1065: 한수[JAVA] (0) | 2024.04.17 |
백준 14501: 퇴사[JAVA] (0) | 2024.04.17 |
백준 9290: 틱택토 이기기[JAVA] (0) | 2024.04.16 |
백준 5568: 카드 놓기[JAVA] (0) | 2024.04.14 |