슈콩

[프로그래머스] Lv.2 게임 맵 최단 거리 본문

Algorithms/Programmers

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

shukong 2025. 10. 8. 14:56

 

[문제]

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

[소스 코드]

import java.util.*;
class Solution {
    static int[] dr = {-1,1,0,0};
    static int[] dc = {0,0,-1,1};
    public int solution(int[][] maps) {
        int answer = -1;
        int n = maps.length;
        int m = maps[0].length;
        boolean[][] visit = new boolean[n][m];
        Queue<int[]> q = new LinkedList<>();
        visit[0][0] = true;
        q.offer(new int[]{0,0,1});
        while(!q.isEmpty()){
            int[] curr = q.poll();
            if(curr[0]==n-1 && curr[1]==m-1){
                return curr[2];
            }
            for(int d=0;d<4;d++){
                int nr = curr[0] + dr[d];
                int nc = curr[1] + dc[d];
                if(nr<0 || nr>=n || nc<0 || nc>=m || visit[nr][nc]) continue;
                if(maps[nr][nc]==1){
                    visit[nr][nc] = true;
                    q.offer(new int[]{nr,nc,curr[2]+1});
                }
            }
        }
        return answer;
    }
}