Muscardinus

게임 맵 최단거리 본문

알고리즘 문제/[프로그래머스] Lv2

게임 맵 최단거리

Muscardinus 2022. 3. 28. 22:54
728x90

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

 

코딩테스트 연습 - 게임 맵 최단거리

[[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1

programmers.co.kr

function solution(maps) {
    let answer;
    const dy = [1, -1, 0, 0];
    const dx = [0, 0, 1, -1];
    const n = maps.length;
    const m = maps[maps.length - 1].length;
    const check = Array.from(new Array(n), () => new Array(m).fill(0));
    const q = [];
    let h = 0;
    let t = 1;
    q.push([0, 0]);
    check[0][0] = 1;
    while (h !== t) {
        const [y, x] = q[h++];
        for (let i = 0; i < 4; i++) {
            const ny = y + dy[i];
            const nx = x + dx[i];
            if (ny < 0 || ny >= n || nx < 0 || nx >= m) continue;
            if (check[ny][nx]) continue;
            if (maps[ny][nx] === 0) continue;
            q[t++] = [ny, nx];
            check[ny][nx] = check[y][x] + 1;
        }
    }
    return check[n - 1][m - 1] ? check[n - 1][m - 1] : -1;
}
728x90

'알고리즘 문제 > [프로그래머스] Lv2' 카테고리의 다른 글

빛의 경로 사이클  (0) 2022.04.02
주차 요금 계산  (0) 2022.04.01
양궁대회  (0) 2022.03.27
순위검색  (0) 2022.02.02
거리두기 확인하기  (0) 2022.01.28
Comments