Algorithm/SW Expert Academy

[Python] 4875. 미로

느낌표 공장장 2021. 9. 21. 23:56

dfas

# 델타 방향 탐색 (상, 하, 좌, 우)
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]

# 탈출 함수
def escape(sy, sx):
    global result

    # 현재 위치 표시 (지나왔다고 표시하기 다시 탐색 안하도록)
    maze[sy][sx] = 2

    # 이미 출구 찾았으면 돌아가
    if result:
        return

    # 방향 잡기
    for i in range(4):
        ny = sy + dy[i]
        nx = sx + dx[i]
        # 미로 안에서만 탐색하도록 조건문 설정
        if 0 <= ny < n and 0 <= nx < n:
            # 가고자 하는 곳이 도착지점이면 result = 1
            if maze[ny][nx] == 3:
                result = 1
                return
            # 가고자 하는 곳이 통로이면 들어가기
            if maze[ny][nx] == 0:
                escape(ny, nx)


tc = int(input())

for idx in range(1, tc+1):
    n = int(input())

    # 미로 받아오기 & 출발 지점 찾기
    maze = []
    sx = 0
    for i in range(n):
        maze.append(list(map(int, input())))
        # 2아직 못찾았고, 받아온 리스트에 출발지점이 있으면 출발 지점 저장
        if not sx and 2 in maze[i]:
            sy = i
            sx = maze[i].index(2)

    result = 0      # 결과의 기본값 0으로 준다.

    escape(sy, sx)  # 탈출 함수
    print('#{} {}'.format(idx, result))

 

 

 

 

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 4881. 배열 최소합  (0) 2021.09.21
[Python] 4880. 토너먼트 카드 게임  (0) 2021.09.21
[Python] 4874. Forth  (0) 2021.09.21
[Python] 1224. 계산기3  (0) 2021.09.21
[Python] 1223. 계산기2  (0) 2021.09.21