https://www.acmicpc.net/problem/1038
1038번: 감소하는 수
음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를
www.acmicpc.net
풀이
사용한 알고리즘 : 큐
풀이전략
1. 0~9의 수를 큐와 리스트에 추가한다.
2. 큐의 원소를 하나씩 deQueue하고 그 수보다 작은 수를 찾은 뒤
'(deQueue한 원소)x10 + (원래 원소보다 작은 찾은 수)'를 리스트에 추가한다.
이를 큐가 빌 때까지 반복한다.
3. 리스트의 N번째 값을 출력한다.
제출코드
import java.util.Main*;
public class Problem1038 {
static List<Long> list = new ArrayList<>();
static ArrayList<Long> q = new ArrayList<>();
static void func(int N){
Queue<Long> tempQ=new LinkedList<>();
for(long i=0;i<10;++i){
tempQ.offer(i);
q.add(i);
}
while(!tempQ.isEmpty()){
long a=tempQ.poll();
long x=a%10;
for(int i=0;i<x;++i){
long num=a*10+i;
tempQ.offer(num);
q.add(num);
}
}
if(N>=q.size()) System.out.println(-1);
else System.out.println(q.get(N));
}
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
func(N);
}
}
'알고리즘||코딩테스트 > 백준' 카테고리의 다른 글
[백준 2852번] NBA 농구 - JAVA (0) | 2023.07.27 |
---|---|
[백준 9079번] 동전 게임 -JAVA (0) | 2023.07.26 |
[백준 9663번] N-Quenn - JAVA (0) | 2023.07.24 |
[백준 1068번] 트리 - JAVA (0) | 2023.07.21 |
[백준 21758번] 꿀 따기 - JAVA (0) | 2023.07.20 |