정사각형 맵 인줄 알았는데 아니었음. 그래서 처음에 틀렸는데 그것빼곤 알고리즘은 맞았다
boolean[][] check = new boolean[maps.length][maps[0].length];
Queue<Map> q = new LinkedList<>();
q.add(new Map(0, 0, 0));
while (!q.isEmpty()) {
Map m = q.poll();
if (m.x >= 0 && m.x < maps.length && m.y >= 0 && m.y < maps[0].length) {
if (m.x == maps.length - 1 && m.y == maps[0].length - 1) {
answer = m.count +1;
break;
}
if (!check[m.x][m.y] && maps[m.x][m.y] == 1) {
check[m.x][m.y] = true;
m.count++;
q.add(new Map(m.x - 1, m.y, m.count));
q.add(new Map(m.x, m.y - 1, m.count));
q.add(new Map(m.x + 1, m.y, m.count));
q.add(new Map(m.x, m.y + 1, m.count));
}
}
}
4방향 전부 가기 위해서 큐에다 넣어주는데 다들 배열로 해주는거 같음. 근데 난 왜케 굳이 싶은건지 청개구리가 따로없음. for문안에 dx, dy 더해주는게 좀 별로인거같다
dfs로 풀어보는게 좋겠다