๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€

[๋ฐฑ์ค€] 14940 ์‰ฌ์šด ์ตœ๋‹จ๊ฑฐ๋ฆฌ(ํŒŒ์ด์ฌ/python)

by chjcoder 2023. 8. 15.

๐ŸŽˆ๋ฌธ์ œ

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

 

๐ŸŽ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜?

1. 2์ฐจ์› ๋ฐฐ์—ด์—์„œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ -> bfs ๋ฐ”๋กœ ๋– ์˜ฌ๋ ค์•ผ ๋œ๋‹ค!

 

๐Ÿ’ป์ฝ”๋“œ

# 14940 ์‰ฌ์šด ์ตœ๋‹จ๊ฑฐ๋ฆฌ

from collections import deque

# 2. ๋ชฉํ‘œ ์ง€์  ์ขŒํ‘œ ์ฐพ๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„
def Search():
    for i in range(n):
        for j in range(m):
            if graph[i][j] == 2:
                # 3. ํƒ์ƒ‰
                Bfs(i,j)
                return

# 3. bfs ํƒ์ƒ‰ ํ•จ์ˆ˜ ๊ตฌํ˜„
def Bfs(x,y):
    deq = deque()
    deq.append([x,y])
    graph[x][y] = 0
    visit[x][y] = True
    dx = [0,0,-1,1]
    dy = [1,-1,0,0]

    while deq:
        x,y = deq.popleft()

        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or nx > (n-1) or ny < 0 or ny > (m-1):
                continue
            if graph[nx][ny] == 1 and visit[nx][ny] == False:
                graph[nx][ny] = graph[x][y] + 1
                visit[nx][ny] = True
                deq.append([nx,ny])
    # ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์œ„์น˜ -1๋กœ
    for i in range(n):
        for j in range(m):
            if graph[i][j] == 1 and visit[i][j] == False:
                graph[i][j] = -1




# 1. ์ž…๋ ฅ ๋ฐ›๊ธฐ
# n: ๊ฐ€๋กœ(ํ–‰,x), m: ์„ธ๋กœ(์—ด,y)
n,m = map(int,input().split())

graph = []
visit = [[False for j in range(m)] for i in range(n)]
for i in range(n):
    graph.append(list(map(int,input().split())))

# 2. ๋ชฉํ‘œ ์ง€์  ์ขŒํ‘œ์ฐพ๊ธฐ
Search()

# 4. ์ถœ๋ ฅ
for i in range(n):
    print(*graph[i])

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

1. ์ž…๋ ฅ ๋ฐ›๊ธฐ

2. ๋ชฉํ‘œ ์ง€์  ์ขŒํ‘œ ์ฐพ๊ธฐ

 1) ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ 2์˜ ์ขŒํ‘œ๋ฅผ ์ฐพ์•„์„œ bfs()๋ฅผ ๋Œ๋ฆฐ ํ›„ ํ•จ์ˆ˜๋ฅผ ํƒˆ์ถœํ•ด์•ผ๋œ๋‹ค. ์•ˆ๊ทธ๋Ÿฌ๋ฉด bfs๋Œ๋ ค์„œ ๋ฐ”๊ฟ”๋†“์€ graph์—์„œ 2๊ฐ€ ์ถ”ํ›„์— ๋‚˜์˜ค๋ฉด ๊ทธ ์ขŒํ‘œ๋กœ ๋˜ ๋‹ค์‹œ bfs๋ฅผ ๋Œ๋ ค๋ฒ„๋ฆฐ๋‹ค.

3. bfs ํƒ์ƒ‰ ํ•จ์ˆ˜ ๊ตฌํ˜„

 1) ์ด์ œ๋Š” ๋„ˆ๋ฌด ์‰ฌ์šด bfs ์ฝ”๋“œ ์งœ๊ธฐ

 2) ํ, ๊ทธ๋ž˜ํ”„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ฒŒ ์„ค์ •ํ•˜๊ธฐ, ๋ฐฉ๋ฌธ์กฐ๊ฑด๋งŒ ์‹ ๊ฒฝ ์จ์ฃผ๋ฉด ๋œ๋‹ค.