1. 문제 분석

문제를 이해하는게 생각보다 어려웠다.

감소하는 수는 알겠는데 몇번째 라는게 이해가 안갔는데, 단순히 감소하는수들을 나열해 놓고 몇번째에 있냐는 말이였다.

1~9까지는 그냥 1~9까지고

10

20

21

30

31

32

40

41

42 - 18번째

 

이말이였다.

 

처음에는 1개, 2개, 3개 씩늘어나고 100의자리는 10의자리의 수만큼 합쳐지는 규칙성을 발견했지만, 구현하는데 어려움을 겪었다. 그래서 987654321 까지 올 수 있는 감소하는 수는 모조리 배열에 넣어서 찾는 형태로 구현했다.

 

 

 

 

2. 전체소스

import java.io.*;
import java.util.*;
public class Main {
static long[] array;
static int p = 0;
private static void DFS(long num) {
array[p] = num;
p++;
long modValue = num % 10;
if (modValue == 0) {
return;
}
for (long i = modValue - 1; i >= 0; i--) {
long newValue = num * 10 + i;
DFS(newValue);
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String tar = br.readLine();
int target = Integer.parseInt(tar);
array = new long[1023];
if (target > 1022) {
System.out.println("-1");
} else {
for (int i = 0; i < 10; i++) {
DFS(i);
}
Arrays.sort(array);
System.out.println(array[target]);
}
}
}

'알고리즘(BOJ) > Gold' 카테고리의 다른 글

백준 - 신기한 소수 2023  (0) 2023.02.03
백준 - 이모티콘 14226  (0) 2023.02.02
백준 - Contact 1013  (0) 2023.01.29
백준 - 연구소2 17141  (0) 2023.01.28
16236 - 아기상어 (BFS)  (0) 2023.01.14
복사했습니다!