๐ŸŽฒ ๋ฐฑ์ค€ 6593๋ฒˆ ์ƒ๋ฒ” ๋นŒ๋”ฉ

Jeongeunยท2023๋…„ 8์›” 16์ผ
0

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
109/186

๋ฐฑ์ค€ 6593

๐Ÿงธ 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).`);
          }
        }
      }
    }
  }
}

0๊ฐœ์˜ ๋Œ“๊ธ€