고득점 Kit [DFS/BFS] - 게임 맵 최단거리

세나정·2023년 5월 12일
0

문제

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

내 풀이

function solution(maps) {
    let ans = 1;

    let n = maps[0].length;
    let m = maps.length;

    let dx = [-1, 0, 1, 0]
    let dy = [0, 1, 0, -1]

    let visited = [];
    for (let i=0; i<m; i++) visited.push(new Array(m).fill(false))
    visited[0][0] = true

    let queue = [];
    queue.push([0,0])

    while (queue.length) {
        let [x, y] = queue.shift()

        for (let i=0; i<4; i++) {
            let nx = x + dx[i]
            let ny = y + dy[i]

            if (nx < 0 || nx >= n || ny < 0 || ny >= m) continue // 무시

            if (!visited[nx][ny]) {
                if (maps[nx][ny] === 1) {
                    ans++
                } else {
                    queue.push([nx,ny])
                    visited[nx][ny] = true
                }
            }

        }
    }

    console.log(visited)
    console.log(ans)
}

원래 이 코드로 접근을 했다가.. 무언가 이상함을 느꼈다.
현재는 질문을 보낸 상태

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글