티스토리 뷰
const readline = require("readline");
let input = [];
let maze = [];
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => input.push(line.trim())).on("close", () => {
//현재위치 1,1
//큐에 아래, 옆 1이면 저장
//아래부터 시작해서
//아래 위
const [n, m] = input[0].split(" ").map(Number);
input.splice(0, 1);
for (let i = 0; i < n; i++) {
maze.push(input[i].split("").map(Number));
}
const dx = [-1, 1, 0, 0];
const dy = [0, 0, -1, 1];
const queue = [];
const visit = Array.from(new Array(n), () => new Array(m).fill(false));
visit[0][0] = true;
queue.push([0, 0]);
function escape(queue, visit, n, m) {
while (queue.length) {
const v = queue.shift();
const [x, y] = v;
for (let i = 0; i < dx.length; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
if (nx > -1 && nx < n && ny > -1 && ny < m) {
if (visit[nx][ny] === false && maze[nx][ny] !== 0) {
queue.push([nx, ny]);
maze[nx][ny] = maze[x][y] + 1;
visit[nx][ny] = true;
}
}
}
}
}
escape(queue, visit, n, m);
console.log(maze[n - 1][m - 1]);
});
queue를 이용해 지도에 갈 때마다 전 칸의 수의 1을 더한다.
그래서 마지막에 나온 칸의 값을 결과값으로 제출한다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 7569 [nodejs] 토마토 3차원버전 (0) | 2021.02.04 |
---|---|
백준 7576 [nodejs] 토마토 (0) | 2021.02.04 |
백준1012[nodejs]유기농 배추 (0) | 2021.02.04 |
백준2667[nodejs]단지번호붙이기 (0) | 2021.02.04 |
백준2606[nodejs] 바이러스 (0) | 2021.02.04 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- tolowercase
- 카카오2018[1차]
- slice
- 534 error
- 백준 7569 node
- 코드테스트
- 백준
- 정규표현식
- nodemailer error
- Level 1
- 토마토3차원
- sort
- smtp error
- nodejs
- SQL
- 백준 7562 node
- AWS
- 프로그래머스
- Replace
- 회원가입
- 로그인
- 숫자야구게임
- GROUP BY
- 코딩테스트
- Split
- 바이러스 dfs
- JavaScript
- JOIN
- left join
- Express
- Total
- Today
- Yesterday