[24.05.08] 내일배움캠프 17일차 JAVA TIL - 개인 공부 SWEA 1249

2024. 5. 8. 20:32T.I.L

오늘 한 일

  • Web 강의 수강 - 기초 강의
  • 튜터님과 피드백 시간
  • 피드백 반영 기본 기능 코드 수정

 

 


from collections import deque

move = [(1,0),(0,1),(-1,0),(0,-1)]

T = int(input())

def bfs(field, visited, path,que):
    queue = deque(que)
    while queue:
        x,y = queue.popleft()
        for dx,dy in move:
            nx, ny = x+dx,y+dy
            if 0 <= nx < N and 0 <= ny < N:
                if visited[nx][ny] == 0 or \
                        (path[nx][ny] > path[x][y] + field[nx][ny]):
                    visited[nx][ny] = 1
                    path[nx][ny] = path[x][y] + field[nx][ny]
                    queue.append((nx,ny))


for test_case in range(1,T+1):
    N = int(input())
    field = [ list(map(int,input())) for _ in range(N) ]
    visited = [[0]*N for _ in range(N) ]
    path = [[0] * N for _ in range(N)]
    queue = deque()
    queue.append((0,0))
    bfs(field, visited, path, queue)
    result = path[N-1][N-1]
    print(f"#{test_case} {result}")