λ¬Έμ νμ
Boustrophedon
μ€νμΌμ n*n
보λκ° μ£Όμ΄μ§λ€. ( (n-1,0)
μ’νμμ μμνλ€. )
μ£Όμ¬μμ λ°λΌ μ΅λ 6μΉΈμ μ΄λν μ μλ€.
λ§μ½ λ±μ΄λ μ¬λ€λ¦¬λ₯Ό λ§λλ©΄ λ±μ΄λ μ¬λ€λ¦¬λ₯Ό μ΄μ©ν΄μΌνλ€.
n^2
μΉΈμ λλ¬νμ λ, κ²μμ λλλ€.
보λ κ°μ΄ -1
μ΄ μλ κ²½μ° λ±μ΄λ μ¬λ€λ¦¬κ° μ‘΄μ¬νλ€.
λ±μ΄λ μ¬λ€λ¦¬μΈ κ²½μ° λμ°©νλ 보λ κ°μ΄ κΈ°λ‘λμ΄μλ€.
λ±μ΄λ μ¬λ€λ¦¬λ 1
λλ n^2
μΉΈμ μ‘΄μ¬νμ§ μκ³ μ°μμΌλ‘ μ΄λν μ μλ€.
n^2
μ λλ¬νκΈ° μν μ΅μ μ΄λ νμλ₯Ό λ°ννκ³ , λλ¬νμ§ λͺ»νλ©΄ -1
μ λ°ννλ€.
νμ΄
1οΈβ£ 1μ°¨μ 맡과 bfs λ₯Ό μ΄μ©ν λ°©λ²
π‘ λ μ€λ₯Έ Idea
λ¨Όμ , 보λν μμκ° ν·κ°λ €μ μ΄λ₯Ό 1μ°¨μ 맡μΌλ‘ λ°κΏμ ν΄κ²°νλ©΄ κ°λ¨ν κ²μ΄λΌ μκ°μ΄ λ€μλ€.
λ°λΌμ, μ μΌ μλ νλΆν° μμν΄μ 맡μ 1μ°¨μμΌλ‘ λ³ννλ κ³Όμ μ κ±°μ³μΌκ² λ€κ³ μκ°νλ€.
κ·Έλ¦¬κ³ λμ, bfsλ₯Ό μ΄μ©ν΄μ μ¬λ€λ¦¬μ ν κ²½μ°λ μ¬λ€λ¦¬ λͺ©μ μ§λ‘ μ΄λμν¨ μμΉλ₯Ό νμ λ£μ΄μ£Όκ³ μλ κ²½μ°λ μ£Όμ¬μλ₯Ό κ΅΄λ¦° νμλ₯Ό λν κ°μ νμ λ£μ΄μ£Όμλ€.
κ·Έλ¦¬κ³ λ°©λ¬Ένλ μΉΈμ 체ν¬ν΄μ£Όλ©΄μ μ€λ³΅μΌλ‘ μ§λκ°μ§ μλλ‘ κ΅¬ννμλ€.
class Solution {
int N;
int[] map;
public int snakesAndLadders(int[][] board) {
N = board.length;
int end = N * N, result = 0;
map = new int[end];
getMap(board);
boolean[] checked = new boolean[end];
Queue<int[]> q = new LinkedList<>();
q.add(new int[]{0, 0});
checked[0] = true;
while (!q.isEmpty()) {
int[] info = q.poll();
int idx = info[0], cnt = info[1];
for (int i = 1; i <= 6; i++) {
int next = idx + i;
if (next >= end - 1) {
return cnt + 1;
} else {
if (map[next] != -1) {
if (map[next] == end - 1) {
return cnt + 1;
}
if (!checked[map[next]]) {
q.offer(new int[]{map[next], cnt + 1});
checked[map[next]] = true;
}
} else {
if (!checked[next]) {
q.offer(new int[]{next, cnt + 1});
checked[next] = true;
}
}
}
}
}
return -1;
}
private void getMap(int[][] board) {
boolean flag = true;
int idx = 0;
for (int r = N - 1; r >= 0; r--) {
if (flag) {
for (int c = 0; c <= N - 1; c++) {
map[idx++] = board[r][c] == -1 ? -1 : board[r][c] - 1;
flag = false;
}
} else {
for (int c = N - 1; c >= 0; c--) {
map[idx++] = board[r][c] == -1 ? -1 : board[r][c] - 1;
flag = true;
}
}
}
}
}
κ²°κ³Ό
π νκ³
λ¬Έμ κ° λ무 ν΄μνκΈ° μ΄λ €μμ, νμ°Έμ κ³ λ―Όνλ κ² κ°λ€.
μ²μμλ λ¬Έμ λ₯Ό λ무 볡μ‘νκ² μκ°ν΄μ μ ν νλ¦¬μ§ μμ ν¬κΈ°ν κΉλ μκ°νλ λ¬Έμ μ΄λ€...
κ²°κ΅μλ 보λνμ μ΄ν΄νκΈ° μ¬μ΄ λ°©λ²μΌλ‘ λ³ννκ³ λ¬Έμ κ° μꡬνλ μ¬νκ³Ό bfsλ₯Ό μ λλ‘ κ΅¬ννλλ ν΄κ²°ν μ μμλ€.