๐Ÿงฉ Algorithm/[BOJ] Silver

[BOJ] 2178. ๋ฏธ๋กœ ํƒ์ƒ‰ (Python/BFS/Silver 1)

devCloud 2026. 4. 6. 18:15
728x90

[Baekjoon] 2178. ๋ฏธ๋กœ ํƒ์ƒ‰

Silver 1 | #BFS #์ตœ๋‹จ๊ฒฝ๋กœ

1. ๋ฌธ์ œ ์š”์•ฝ ๋ฐ ํ’€์ด ๋ฐฉ์‹

(1, 1)์—์„œ ์ถœ๋ฐœํ•˜์—ฌ (N, M) ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ ์ง€๋‚˜์•ผ ํ•˜๋Š” ์ตœ์†Œ์˜ ์นธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

  • ์ตœ๋‹จ ๊ฑฐ๋ฆฌ = BFS: ๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๋™์ผํ•  ๋•Œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๋ณด์žฅํ•˜๋Š” BFS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ฑฐ๋ฆฌ ์—…๋ฐ์ดํŠธ: ๋‹ค์Œ ์นธ์œผ๋กœ ์ด๋™ํ•  ๋•Œ ํ˜„์žฌ ์นธ์˜ ๊ฐ’ + 1์„ ์ €์žฅํ•˜์—ฌ ๋ฐฉ๋ฌธ ์—ฌ๋ถ€์™€ ๊ฑฐ๋ฆฌ๋ฅผ ๋™์‹œ์— ๊ด€๋ฆฌํ•œ๋‹ค.

2. ์ „์ฒด ์ฝ”๋“œ (Python)

import sys
from collections import deque
input = sys.stdin.readline

# ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์‹œ ๋ฏธ๋ฆฌ intํ˜• ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ (์ตœ์ ํ™”)
N, M = map(int, input().split())
graph = [list(map(int, input().strip())) for _ in range(N)]

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

def bfs():
    queue = deque([(0, 0)])
    
    while queue:
        x, y = queue.popleft()
        
        # ๋„์ฐฉ์ง€ ๋„๋‹ฌ ์‹œ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
        if x == N - 1 and y == M - 1:
            return graph[x][y]
        
        for k in range(4):
            nx, ny = x + dx[k], j + dy[k] # ์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰
            
            if 0 <= nx < N and 0 <= ny < M and graph[nx][ny] == 1:
                graph[nx][ny] = graph[x][y] + 1
                queue.append((nx, ny))
    return -1

print(bfs())

3. ๐Ÿš€ ๊ณผ๊ฑฐ ํ’€์ด์™€ ๋น„๊ต: ๋ฌด์—‡์ด ๋‹ฌ๋ผ์กŒ๋‚˜?

์˜ˆ์ „์— ์ž‘์„ฑํ–ˆ๋˜ ํ’€์ด(ํฌ์ŠคํŒ… #132)๋ฅผ ๋‹ค์‹œ ํ›‘์–ด๋ณด๋‹ˆ, ๊ทธ๋•Œ์™€ ์ง€๊ธˆ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์— ๊ฝค ํฐ ์ฐจ์ด๊ฐ€ ๋А๊ปด์กŒ๋‹ค.

  • ๊ตฌํ˜„์˜ ์ˆ™๋ จ๋„: ์˜ˆ์ „์—๋Š” ๋กœ์ง์„ ์งœ๋ฉด์„œ ๊ฝค ๋ฒ„๋ฒ…๊ฑฐ๋ ธ๋˜ ๊ธฐ์–ต์ด ๋‚˜๋Š”๋ฐ, ์ง€๊ธˆ์€ BFS์˜ ํ๋ฆ„์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด ๋ง‰ํž˜์—†์ด ์ˆ˜์›”ํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํšจ์œจ์„ฑ(Performance) ๊ณ ๋ ค: ์˜ˆ์ „ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํžˆ '์ •๋‹ต์„ ๋งžํžˆ๋Š” ๊ฒƒ'์— ๊ธ‰๊ธ‰ํ•ด ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜์ด๋‚˜ ์—ฐ์‚ฐ ๋น„์šฉ์„ ์ „ํ˜€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์€ ๊ฒŒ ๋ณด์˜€๋‹ค. ์ด๋ฒˆ์—๋Š” ์ž…๋ ฅ ๋‹จ๊ณ„์—์„œ ๋ฏธ๋ฆฌ int ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋“ฑ ๋ฏธ์„ธํ•œ ์„ฑ๋Šฅ๊นŒ์ง€ ๊ณ ๋ คํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.
  • ์ƒ์„ธ ์„ค๋ช… ์ฐธ๊ณ : ์›๋ฆฌ์— ๋Œ€ํ•œ ์•„์ฃผ ๊ธฐ์ดˆ์ ์ธ ์„ค๋ช…์€ ์˜ˆ์ „ ํฌ์ŠคํŒ…(#132)์— ๋” ์ž์„ธํžˆ ์ ํ˜€ ์žˆ์ง€๋งŒ, ์ „์ฒด์ ์ธ ์ฝ”๋“œ์˜ ํ€„๋ฆฌํ‹ฐ๋Š” ํ™•์‹คํžˆ ์ง€๊ธˆ์ด ๋” ๋‚˜์•„์ง„ ๊ฒƒ ๊ฐ™๋‹ค.

4. โœ๏ธ ํšŒ๊ณ : ๊ฒฌ๊ณ ํ•œ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ

โœ” ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ตœ์ ํ™”์˜ ์ค‘์š”์„ฑ

ํƒ์ƒ‰ ๋ฃจํ”„ ๋‚ด๋ถ€์—์„œ ๋งค๋ฒˆ int() ํ˜•๋ณ€ํ™˜์„ ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•œ ๋ถ€ํ•˜๋ฅผ ์ค€๋‹ค. ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ ์ด๋ฅผ ์ดˆ๊ธฐ์— ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ฐ”๊พผ ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ›จ์”ฌ ๊น”๋”ํ•œ ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ๋‹ค.


๐Ÿ’ก ๋ฐฐ์šด ์ 

  • BFS๋Š” ํ์—์„œ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ตœ๋‹จ์ž„์„ ๋ณด์žฅํ•œ๋‹ค.
  • ๋ฏธ๋กœ๊ฐ€ ๋ง‰ํ˜€ ๋„์ฐฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด return -1 ์ฒ˜๋ฆฌ๋ฅผ ์Šต๊ด€ํ™”ํ•˜์ž.
728x90