반응형
SMALL
<풀어나간 순서>
1. 각 자릿수를 더해주기 위해서는 각 자릿수가 무엇인지 먼저 알아야되기 때문에 이를 알아내는 과정을 먼저 작성했다.
이 방법은 너무 자주 사용되어서 익숙해졌다.
2. 이렇게 해서 셀프넘버가 아닌 숫자는 다 구했었는데 셀프넘버를 어떻게 골라낼지 생각하는 과정에서 대부분의 시간을 쏟았다.
3. 제일 먼저 떠오른건 배열이었지만, 배열말고 다른 방법이 없을까 고민하다가 결국 배열을 사용했다.
4. 이 문제를 풀면서 자바 배열을 boolean으로 초기화 할 수 있다는 사실과, new로 생성할 경우 모든 값이 false로 초기화 된다는 것을 처음 알았다.
5. 셀프넘버가 아닌 수를 idx값으로 하여 해당 인덱스를 가지고 있는 배열 값을 true로 바꿔준 후, 마지막에 for문을 돌려서 false인 값만 골라내주었다.
arr[셀프넘버가 아닌수] = true;
arr[셀프넘버] = false;
package Baekjoon;
import java.util.Scanner;
public class Main {
static boolean arr[] = new boolean[10001];
public static void main(String[]args) {
for(int i=1;i<=10000;i++) {
int idx = nextNum(i);
if(idx<=10000)
arr[idx]=true;
}
for(int i=1;i<=10000;i++) {
if(arr[i]==false)
System.out.println(i);
}
}
private static int nextNum(int n) {
int sum=n; // 자기자신 먼저 더해주고
while(n!=0) {
int r = n%10;
sum += r;
n/=10;
}
return sum;
}
}
반응형
LIST
'백준 문제풀이' 카테고리의 다른 글
백준 2751번 : 수 정렬하기2 - 시간초과 문제해결 - Collections.sort() 사용하기 (0) | 2023.06.29 |
---|---|
[python] 백준 1924: 2007년 (0) | 2021.06.05 |
[python] 백준 1157번: 단어공부 (0) | 2021.05.14 |
백준 1065번 : 한수 (0) | 2020.09.24 |
백준 10828번 : 스택 (0) | 2020.09.16 |
댓글