컴퓨터공학/알고리즘 문제 풀이

[프로그래머스] 게임 맵 최단거리

TaeGyeong Lee 2023. 4. 16. 16:38

접근

  • DFS 또는 BFS로 풀 수 있지만 DFS로 풀었다가는 TLE에 걸릴 수 있다는 점에 명심해야 한다.

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/1844

 

솔루션

def solution(maps):

    ROW_length = len(maps)
    COL_length = len(maps[0])
    visited = [[False for _ in range(COL_length)] for _ in range(ROW_length)]
    queue = [[0,0,1]]
    
    while queue:
        ROW, COL, DIST = queue.pop(0)
        
        # 조건에 맞지 않는 경우는 모두 추가 탐색하지 않습니다.
        if ROW < 0 or ROW > ROW_length-1 or COL < 0 or COL > COL_length-1 or \
            visited[ROW][COL] == True or maps[ROW][COL] == 0:
            continue
        
        visited[ROW][COL] = True
                
        # 만약 마지막에 도착한 경우 탐색은 종료됩니다.
        if ROW == ROW_length-1 and COL == COL_length-1:
            return DIST
        
        # 현재 위치에서 가능한 방향을 찾아 탐색 큐에 추가합니다.
        queue.append([ROW-1, COL, DIST+1])
        queue.append([ROW, COL-1, DIST+1])
        queue.append([ROW+1, COL, DIST+1])
        queue.append([ROW, COL+1, DIST+1])
    
    return -1

'컴퓨터공학 > 알고리즘 문제 풀이' 카테고리의 다른 글

[백준] 1463 1로 만들기  (0) 2023.07.07
[백준] 2839 설탕 배달  (0) 2023.07.02
[프로그래머스] 달리기 경주  (0) 2023.04.15
[LeetCode] 71. Simplify Path  (0) 2023.04.12
[LeetCode] 139. Word Break  (0) 2023.04.10