1seul357

[SWEA] 보급로 본문

알고리즘/SWEA

[SWEA] 보급로

1seul 2021. 11. 28. 16:17
def bfs():     # BFS 탐색
    dr = [-1, 1, 0, 0]
    dc = [0, 0, -1, 1]
    while len(q) != 0:    # q에 값이 있을 때까지 반복
        x, y = q.pop(0)   # 값 꺼내기
        for i in range(4):   # 상, 하, 좌, 우 탐색
            now_dr = x + dr[i]
            now_dc = y + dc[i]
            if 0 <= now_dr < N and 0 <= now_dc < N:   # 다음 경로가 범위 안에 있다면 탐색
                if CHECK[now_dr][now_dc] > MAP[x][y] + CHECK[x][y]:   # 현재의 경로가 더 적은 비용이라면
                    CHECK[now_dr][now_dc] = MAP[x][y] + CHECK[x][y]   # 갱신
                    q.append([now_dr, now_dc])   # 탐색할 경로 추가

T = int(input())
for TC in range(T):
    N = int(input())
    MAP = [list(map(int, list(input()))) for _ in range(N)]
    CHECK = [[999999]*N for _ in range(N)]
    CHECK[0][0] = 0   # 출발점은 0
    q = []
    q.append([0, 0])
    bfs()

    print('#{} {}'.format(TC+1, CHECK[N-1][N-1]))    # 도착점 최소 비용 출력

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 최소비용  (0) 2021.11.28
[SWEA] 창용 마을 무리의 개수  (0) 2021.11.28
[SWEA] N Castle  (0) 2021.11.28
[SWEA] 격자판의 숫자 이어붙이기  (0) 2021.11.28
[SWEA] 장훈이의 높은 선반  (0) 2021.11.28