๐งธ 3์ฐจ์ ๋ฐฐ์ด์ด๋ผ ์กฐ๊ธ ํท๊ฐ๋ ธ์ ๋ฟ ํญ์ ํ๋๋๋ก ํ์๋๋ ์ ๋๋ค!
์ฝ๋
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const dir = [
[0, 0, 1],
[0, 0, -1],
[0, 1, 0],
[0, -1, 0],
[1, 0, 0],
[-1, 0, 0],
];
let i = 0;
while (input[i] !== "0 0 0") {
const [L, R, C] = input[i].split(" ").map(Number);
i++;
let map = new Array(L);
for (let l = 0; l < L; l++) {
let box = new Array(R);
for (let r = 0; r < R; r++) {
box[r] = input[i].split("");
i++;
}
map[l] = [...box];
i++;
}
const BFS = (l, r, c) => {
const queue = [[l, r, c, 0]];
while (queue.length) {
const [pl, pr, pc, time] = queue.shift();
for (let d = 0; d < 6; d++) {
const [nl, nr, nc] = [pl + dir[d][0], pr + dir[d][1], pc + dir[d][2]];
if (nl >= 0 && nl < L && nr >= 0 && nr < R && nc >= 0 && nc < C) {
if (map[nl][nr][nc] === ".") {
queue.push([nl, nr, nc, time + 1]);
map[nl][nr][nc] = "x";
} else if (map[nl][nr][nc] === "E") {
return time + 1;
}
}
}
}
return 0;
};
for (let l = 0; l < L; l++) {
for (let r = 0; r < R; r++) {
for (let c = 0; c < C; c++) {
if (map[l][r][c] === "S") {
const result = BFS(l, r, c);
if (result === 0) {
console.log("Trapped!");
} else {
console.log(`Escaped in ${result} minute(s).`);
}
}
}
}
}
}