[프로그래머스] - 게임 맵 최단거리 (Java)

Moveheon·2023년 11월 19일

프로그래머스

목록 보기
21/24
import java.util.LinkedList;
import java.util.Queue;


class Solution {
    public int solution(int[][] maps) {
        int[] dx = {-1, 0, 1, 0};
		int[] dy = {0, 1, 0, -1};
		Queue<int[]> Q = new LinkedList<>();
		int X = maps.length;
		int Y = maps[0].length;
		int[][] dist = new int[X][Y];
		Q.offer(new int[]{0, 0});
		int answer = 1;
		while(!Q.isEmpty()){
			int len = Q.size();
			for(int i = 0; i < len; i++){
				int[] p = Q.poll();
				for(int k = 0; k < 4; k++){
					int nx=p[0]+dx[k];
					int ny=p[1]+dy[k];
					if(nx >= 0 && nx < X && ny >= 0 && ny < Y && maps[nx][ny] == 1){
						maps[nx][ny] = 0;
						Q.offer(new int[]{nx, ny});
						dist[nx][ny] = answer + 1;
					}
				}
			}
			answer++;
		}
		if(dist[X - 1][Y - 1]==0) return -1;
		else return dist[X - 1][Y - 1];
    }
}

0개의 댓글