배열을 요소로 가지는 queue
각 요소가 int 배열로 이루어짐
int 배열의 요소는 {row, col, distance}로 이루어짐
LinkedList<int[]> queue = new LinkedList<>();
queue.offer(new int[]{0, 0, 1});
import java.util.LinkedList;
public class NUM1844 {
public static void main(String[] args) {
int[][] maps = {{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}};
System.out.println(solution(maps));
}
public static int solution(int[][] maps) {
int answer = 0;
answer = -1;
int endRow = maps.length - 1;
int endCol = maps[0].length - 1;
int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
LinkedList<int[]> queue = new LinkedList<>();
queue.offer(new int[]{0, 0, 1});
while (!queue.isEmpty()) {
int[] current = queue.poll();
if (current[0] == endRow && current[1] == endCol) {
answer = current[2];
break;
}
for (int[] dir : directions) {
int newRow = current[0] + dir[0];
int newCol = current[1] + dir[1];
if (newRow >= 0 && newRow <= endRow && newCol >= 0 && newCol <= endCol && maps[newRow][newCol] == 1) {
queue.offer(new int[]{newRow, newCol, current[2] + 1});
maps[newRow][newCol] = 0;
}
}
}
return answer;
}
}
*다른 분들의 코드를 참고하여 작성했습니다