반응형
🔺 문제
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import java.util.*;
import java.io.*;
public class Main {
public static ArrayList<Long> list;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
list = new ArrayList<>();
if(n <= 10) {
System.out.println(n);
return;
} else if(n >= 1023) {
System.out.println(-1);
return;
}
for(int i = 0 ; i < 10 ; i++) {
solution(i, 1);
}
Collections.sort(list);
System.out.println(list.get(n));
br.close();
}
public static void solution(long num, int idx) {
if(idx > 10) return;
list.add(num);
for(long i = 0 ; i < num % 10 ; i++) {
solution((num * 10) + i, idx + 1);
}
}
}
|
cs |
✅ 해결 아이디어
✔ 완전탐색
- 제일 처음 뽑는 수를 기준으로 감소하는 수를 만들어 리스트에 저장
→ 현재 뽑은 수를 10으로 나눈 나머지보다 작은 값만 올 수 있음
- 만든 리스트 정렬해 n번째 수 출력
💥 유의사항
• long형으로 받아야 함.
🔺 다른 풀이들
- 과정 설명 굿...
- 뽑은 수에 1씩 더해가며 완전탐색 하는 방법
💬 느낀 점
브루트포스 백트래킹 연습을 많이 해야겄다....
자릿수 재귀함수로 늘리는 로직 잊지 말자!
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1303번: 전쟁 - 전투 (0) | 2023.05.25 |
---|---|
[백준/JAVA] 17070번: 파이프 옮기기 1 (1) | 2023.05.24 |
[백준/JAVA] 2667번: 단지번호붙이기 (0) | 2023.05.24 |
[백준/JAVA] 2294번: 동전 2 (0) | 2023.05.23 |
[백준/JAVA] 2293번: 동전 1 (0) | 2023.05.23 |