b13913. ์ˆœ๊ฐ„์ด๋™ 4

2025. 4. 22. 21:14ยทAlgorithm & Data Structures/BOJ

 

 

๐Ÿ“Œ ์ž๋ฐ”(Java)๋กœ ํ‘ธ๋Š” ์ˆจ๋ฐ”๊ผญ์งˆ 4 - ๋ฐฑ์ค€ 13913๐Ÿงโ€โ™‚๏ธโžก๏ธ๐Ÿงโ€โ™€๏ธ

 

์ตœ์†Œ ์‹œ๊ฐ„ + ์ด๋™ ๊ฒฝ๋กœ๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋Š” BFS ๋ฌธ์ œ!

 

๐Ÿ”Ž ๋ฌธ์ œ ๊ฐœ์š”

 

๋ฐฑ์ค€ 13913๋ฒˆ - ์ˆจ๋ฐ”๊ผญ์งˆ 4๋Š”

์ •์ˆ˜ N(์ˆ˜๋นˆ์ด ์œ„์น˜)์—์„œ K(๋™์ƒ ์œ„์น˜)๊นŒ์ง€

๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์—ฐ์‚ฐ์œผ๋กœ ์ด๋™ํ•ด ์ตœ์†Œ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

  • X - 1
  • X + 1
  • X * 2

 

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,

โœ” ์ตœ๋‹จ ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜

โœ” ๊ทธ๋•Œ์˜ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์ •ํ™•ํžˆ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

 


๐Ÿ’ก ์˜ˆ์ œ ์ž…๋ ฅ

5 17

 

๐Ÿ’ก ์˜ˆ์ œ ์ถœ๋ ฅ

4
5 10 9 18 17

 

 


๐Ÿ›  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐฉ์‹

 

์ด ๋ฌธ์ œ๋Š” ์ „ํ˜•์ ์ธ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํƒ์ƒ‰ โ†’ BFS ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒฝ๋กœ ์ถ”์ ๊นŒ์ง€ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ,

โœ” ์ด๋™ ์ด์ „ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋Š” prev[] ๋ฐฐ์—ด์„ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 


๐Ÿ”น Java ์ฝ”๋“œ ์„ค๋ช…

๐Ÿ“Œ Node ํด๋ž˜์Šค

static class Node {
    int position;
    int time;
    ...
}

โœ” ํ˜„์žฌ ์œ„์น˜์™€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ํ•จ๊ป˜ ์ €์žฅํ•˜๋Š” ํด๋ž˜์Šค

 

 

๐Ÿ“Œ BFS ๋กœ์ง

static int bfs() {
    Queue<Node> queue = new ArrayDeque<>();
    queue.offer(new Node(start, 0));
    visited[start] = true;

    while (!queue.isEmpty()) {
        Node current = queue.poll();

        if (current.position == end) {
            return current.time;
        }

        for (int next : new int[]{current.position - 1, current.position + 1, current.position * 2}) {
            if (next >= 0 && next < MAX && !visited[next]) {
                visited[next] = true;
                prev[next] = current.position;
                queue.offer(new Node(next, current.time + 1));
            }
        }
    }
    return -1;
}

โœ” visited[]๋กœ ์ค‘๋ณต ๋ฐฉ๋ฌธ ๋ฐฉ์ง€

โœ” prev[next] = current.position๋กœ ๊ฒฝ๋กœ ์ €์žฅ

โœ” ๋„์ฐฉํ•˜๋ฉด current.time์„ ๋ฐ˜ํ™˜

 

 

๐Ÿ“Œ ๊ฒฝ๋กœ ์ถœ๋ ฅ ๋กœ์ง

static void printPath() {
    Deque<Integer> path = new ArrayDeque<>();
    for (int at = end; at != -1; at = prev[at]) {
        path.push(at);
    }

    StringBuilder sb = new StringBuilder();
    while (!path.isEmpty()) {
        sb.append(path.pop()).append(" ");
    }
    System.out.println(sb.toString().trim());
}

โœ” prev[]๋ฅผ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋ฉฐ stack์— ์ €์žฅ

โœ” stack์„ ์‚ฌ์šฉํ•ด ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ

 


๐Ÿ† ์ •๋ฆฌ

โœ… ํ•ต์‹ฌ ํฌ์ธํŠธ

 

  • BFS๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํƒ์ƒ‰์— ์ ํ•ฉ
  • ๊ฒฝ๋กœ ๋ณต์›์€ prev[] ๋ฐฐ์—ด์„ ํ†ตํ•ด
  • O(N) ์‹œ๊ฐ„ ์•ˆ์— ์ •๋‹ต ๊ฒฝ๋กœ ์ถ”์  ๊ฐ€๋Šฅ
 

 

'Algorithm & Data Structures > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

b2263. ํŠธ๋ฆฌ์˜ ์ˆœํšŒ  (0) 2025.04.28
b11780. ํ”Œ๋กœ์ด๋“œ 2  (0) 2025.04.25
b2618. ๊ฒฝ์ฐฐ์ฐจ  (0) 2025.04.18
b14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 5  (0) 2025.04.16
b14002. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 4  (0) 2025.04.15
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b2263. ํŠธ๋ฆฌ์˜ ์ˆœํšŒ
  • b11780. ํ”Œ๋กœ์ด๋“œ 2
  • b2618. ๊ฒฝ์ฐฐ์ฐจ
  • b14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด 5
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (313)
      • Algorithm & Data Structures (235)
        • BOJ (93)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (25)
        • SQL (19)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • ์šด์˜์ฒด์ œ (13)
        • ๋„คํŠธ์›Œํฌ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์œ ๋‹ˆ์˜จํŒŒ์ธ๋“œ
    Java
    ์ด๋ถ„ํƒ์ƒ‰
    PriorityQueue
    Dijkstra
    ๋™์ ๊ณ„ํš๋ฒ•
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    SQL
    ์ „์œ„์ˆœํšŒ
    ํ›„์œ„์ˆœํšŒ
    ์Šคํƒ
    DynamicProgramming
    algorithm
    ๊ฒฝ๋กœ์••์ถ•
    ๋‹ค์ต์ŠคํŠธ๋ผ
    binarySearch
    ๊ตฌํ˜„
    BFS
    dfs
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐฑ์ค€
    Union-Find
    ํˆฌํฌ์ธํ„ฐ
    Stack
    ๋ฐฑํŠธ๋ž˜ํ‚น
    baekjoon
    unionfind
    ๊ณจ๋“œ
    programmers
    dp
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b13913. ์ˆœ๊ฐ„์ด๋™ 4
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.