코테/백준

[백준/JAVA] 1038번: 감소하는 수

imname1am 2023. 5. 24. 15:07
반응형

🔺 문제

 

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 > 10return;
        
        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

 

반응형