[백준] 1174 - 줄어드는 수(Java)

2025. 5. 8. 23:13·Algorithm

문제 파악

https://www.acmicpc.net/problem/1174

풀이

조합보다는 BFS(Queue)를 사용하여 구현하면 더 쉽고 간단하게 풀이할 수 있다.

큐에 적재하는 숫자는 다음과 같다.

0 - - -
1 10 - -
2 20 - -
  21 210 -
3 30 - -
  31 310 -
  32 320 -
    321 3210
...
9 90 - -
  91 910 -
  92 920 -
    921 9210

1열(0,1,2,3...,9), 2열(10,20,21,30...98), 3열(210,310,...987), ... 순서대로 큐에 적재된다.

poll 한 원소의 끝 자리(poll%10)보다 작은 숫자를 붙여 다시 큐에 적재해준다.
예를 들어 만약 93이 최신 숫자였다면, 다음 뎁스의 감소하는 숫자는 [930, 931, 932]이 되겠다.

또한 FIFO로 순서가 보장되기 때문에 큐에 넣을 때 작은 숫자부터 넣어주면 추가 정렬은 필요 없다.

조심할 부분은 큐의 원소가 상당히 커지므로, 자료형에도 신경을 써 주도록 하자 😊

코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        int n = Integer.parseInt(new Scanner(System.in).nextLine());
        Queue<Long> queue = new LinkedList<>();
        for (long i = 0; i <= 9; i++) {
            queue.offer(i);
        }
        long localN = 1;
        while (!queue.isEmpty()) {
            long poll = queue.poll();
            if (localN == n) {
                System.out.println(poll);
                return;
            }
            localN++;
            for (int i = 0; i < poll % 10; i++) {
                queue.offer(poll * 10 + i);
            }
        }
        System.out.println(-1);
    }
}

 

 

저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준] 2493 - 탑(Java)  (0) 2025.11.10
[백준] 1937 - 욕심쟁이 판다 (Java)  (4) 2025.05.15
[백준] 12970 - AB (Java)  (0) 2025.04.28
[백준] 1301 - 비즈 공예(Java)  (1) 2025.04.21
[백준] 1039 - 교환(Java)  (1) 2025.04.18
'Algorithm' 카테고리의 다른 글
  • [백준] 2493 - 탑(Java)
  • [백준] 1937 - 욕심쟁이 판다 (Java)
  • [백준] 12970 - AB (Java)
  • [백준] 1301 - 비즈 공예(Java)
코드파고
코드파고
  • 코드파고
    Digging Code
    코드파고
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Memorization (12)
      • Spring (18)
      • Java (1)
      • Algorithm (40)
      • Server (2)
      • DB (0)
      • CS (0)
      • CI & CD (4)
      • Architecture (0)
      • Design Patterns (0)
      • Study (1)
      • Book (9)
        • DEV (7)
        • Non-DEV (0)
      • Infra (1)
        • Kafka (6)
        • AWS (4)
      • TroubleShooting (1)
        • Etc (1)
      • Tools (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    clean architecture
    헥사고날아키텍쳐
    SpringFramework
    Spring Boot
    architecture
    클린아키텍쳐
    알고리즘
    Clean Code
    Spring독학
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코드파고
[백준] 1174 - 줄어드는 수(Java)
상단으로

티스토리툴바