[JAVA] Boj 1174 | 줄어드는 숫자

문제

  • [Boj 1174- 줄어드는 숫자]
  • 해결방법 : bfs와 작은 숫자인 경우만 stringbuilder에 넣으면서 푼 문제! 쉬웠다 근데 끝 조건을 파악 못해 시간이 걸렸다…ㅎㅎ 숫자의 가장 끝이 9876543210이라는 걸 뒤늦게 알아차려서 왜 대체 안되지 이러면서 시간을 허비했었다

나의 풀이

package day13;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Boj1174 {
static int N;
static StringBuilder num = new StringBuilder();
static int cnt;
static Queue<String> que = new LinkedList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
for(int i=0;i<=9;i++) {
que.add(String.valueOf(i)); //문자처럼 뒤에다가 저장하기 위해
}
bfs();
}
private static void bfs() {
int cnt=0; // n번째를 찾기 위해 카운팅한다
while(!que.isEmpty()) {
cnt++;
String num = que.poll(); //숫자를 하나씩 뺄 때마다 카운트 증가 , 몇번째로 감수하는 숫자인지 체크하기 위해
String tmp = num.substring(num.length()-1); //가장 오른쪽에 있는 숫자, 마지막 숫자만 빼낸다
// System.out.println(cnt+" "+num+" "+tmp);
//1023번 이후로는 숫자 만들 수 없다 1023번째 = 987654321
if(cnt==N) { //n번째인 경우
System.out.println(num);
return;
}
// 가장 오른쪽 숫자보다 작은경우만 넣을 수 있게끔 반복문돌린다
for(int i=0;i<Integer.parseInt(tmp);i++) {
que.add(num+i);
}
}
System.out.println(-1);
}
}
view raw Boj_1174.java hosted with ❤ by GitHub

You might also enjoy