๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊นƒ๋„˜๋ฒ„ & ๋ฐฑ์ค€ 7576 ํ† ๋งˆํ†  ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/[๐๐ฒ๐ญ๐ก๐จ๐ง] ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊นƒ๋„˜๋ฒ„ & ๋ฐฑ์ค€ 7576 ํ† ๋งˆํ† 

๐ŸคRyusun๐Ÿค 2023. 9. 6. 12:23
#ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊นƒ๋„˜๋ฒ„

def solution(numbers, target):
    dfs(numbers, target, 0, 0)
    return

def dfs(numbers, target, now, index):
    global cnt
    if index == len(numbers):
        if now == target:
            cnt += 1
        return

    dfs(numbers, target, now + numbers[index], index+1) 
    dfs(numbers, target, now - numbers[index], index+1)

cnt = 0
from collections import deque
import sys

input = sys.stdin.readline
m, n = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]

d_row = [0, -1, 0, 1] #์‹œ๊ณ„ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ(์˜ค๋ฅธ์ชฝ ์œ„ ์™ผ์ชฝ ์•„๋ž˜)
d_col = [1, 0, -1, 0] #์‹œ๊ณ„ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ(์˜ค๋ฅธ์ชฝ ์œ„ ์™ผ์ชฝ ์•„๋ž˜)

def bfs():
    queue = deque()
    for i in range(n):
        for j in range(m):
            if graph[i][j] == 1:
                queue.append([i, j])

    while queue:
        x ,y = queue.popleft()
        for d in range(4):
            nx = d_row[d] + x
            ny = d_col[d] + y
            if nx< 0 or ny < 0 or nx > n-1 or ny > m-1:
                continue
            if graph[nx][ny] == 0:
                graph[nx][ny] = graph[x][y] + 1
                queue.append([nx,ny])

bfs()
answer = 0
for i in range(n):
     for j in range(m):
         if graph[i][j] == 0:
             print(-1)
             exit()
         answer = max(answer, graph[i][j])
print(answer-1)#1๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ๊น ๋งˆ์ง€๋ง‰ ๊ฐ’์—์„œ -1ํ•ด์ฃผ๊ธฐ