GINI야 도와줘(Python)

728x90
반응형

https://softeer.ai/practice/6271

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

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

n, m = map(int, input().split())
graph = [list(map(str, input())) for _ in range(n)]
distance = [[0]*m for _ in range(n)]
mover = []
# 태범이가 먼저 움직여야 하므로 먼저 mover 리스트에 담는다.
for i in range(n):
    for j in range(m):
        if graph[i][j] == "W":
            mover.append((i, j, "W"))

for i in range(n):
    for j in range(m):
        if graph[i][j] == "*":
            mover.append((i, j, "*"))

def bfs():
    Q = deque(mover)
    dx = [1, -1, 0, 0]
    dy = [0, 0, 1, -1]
    while Q:
        x, y, c = Q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            # 범위 안에 있을 때만 움직임
            if 0 <= nx < n and 0 <= ny < m:
            	# 현재 캐릭터가 태범이고 만약 소나기에 침범되지 않았다면 움직임
                if c == "W" and graph[x][y] == "W":
                    if graph[nx][ny] == ".":
                        graph[nx][ny] = "W"
                        distance[nx][ny] = distance[x][y] + 1
                        Q.append((nx, ny, c))
                    elif graph[nx][ny] == "H":
                        return distance[x][y] + 1
                # 현재 캐릭터가 소나기일 때
                if c == "*":
                    if graph[nx][ny] == "." or graph[nx][ny] == "W":
                        graph[nx][ny] = "*"
                        Q.append((nx, ny, c))
    return "FAIL"

print(bfs())
728x90
반응형

'코딩테스트 준비 > Softeer' 카테고리의 다른 글

나무 섭지 (Python)  (1) 2024.10.30
[Softeer] 전광판(파이썬, Python)  (0) 2023.07.08
[Softeer] GBC  (0) 2023.06.17
[Softeer] 거리합 구하기  (0) 2023.06.17
[Softeer] A+B (Python)  (0) 2023.06.17