🔺 문제
1038번: 감소하는 수
음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를
www.acmicpc.net
🔺 코드
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형으로 받아야 함.
🔺 다른 풀이들
- 과정 설명 굿...
[Java] [백준 1038][Brute-force] 감소하는 수
문제 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는
namhandong.tistory.com
[Java] BOJ 1038번 감소하는 수
1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번
comgong-man.tistory.com
- 뽑은 수에 1씩 더해가며 완전탐색 하는 방법
백준 1038번 감소하는 수 Java
백준 1038번 감소하는 수 Java
velog.io
💬 느낀 점
브루트포스 백트래킹 연습을 많이 해야겄다....
자릿수 재귀함수로 늘리는 로직 잊지 말자!
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[백준]1038: 감소하는 수 - JAVA
문제 www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수
moonsbeen.tistory.com
'코테 > 백준' 카테고리의 다른 글
[백준/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 |