oohyoo 님의 블로그

[Python] 프로그래머스 - 미로 탐험1 본문

코딩테스트

[Python] 프로그래머스 - 미로 탐험1

oohyoo 2025. 2. 4. 00:14

[문제]

[풀이]

#입력과 출력을 자유롭게 작성해주세요
from collections import deque

def solution(H, W, h, w, house):
    queue = deque()
    
    dh = [-1, 0, 1, 0]
    dw = [0, 1, 0, -1]
    
    visited = [[False]*W for _ in range(H)]
    queue.append((h, w, 0))
    
    while queue:
        x, y, dist = queue.popleft()
        for d in range(4):
            cx = x+dh[d]
            cy = y+dw[d]
            if(0<=cx<H and 0<=cy<W and house[cx][cy] !=0 and not visited[cx][cy]):
                visited[cx][cy] = True
                queue.append((cx, cy, dist+1))
                house[cx][cy] = dist+1
    

    for i in range(H):
        for j in range(W):
            if not visited[i][j]:
                print(0, end=' ')
            elif (i == h and j == w):
                print(0, end=' ')
            else:
                print(str(house[i][j]), end=' ')
        print()

H, W = map(int, input().split())
house = []
for th in range(H):
    temp = list(map(int, input().strip()))
    if 2 in temp:
        h = th
        w = temp.index(2)
    house.append(temp)
    
solution(H, W, h, w, house)
반응형