[백준] 5014 스타트링크 - javascript

📌 문제

https://www.acmicpc.net/problem/5014

📌 풀이

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");

let [f, s, g, u, d] = input[0].split(" ").map(Number);

let visited = new Array(2000001).fill(0);
let cnt = 0;
let flag = true;
let queue = [];
queue.push(s);
visited[s] = 1;
while (queue.length) {
  let len = queue.length;
  for (let i = 0; i < len; i++) {
    let x = queue.shift();
    if (x === g) {
      flag = false;
      visited[x] = 1;
      console.log(cnt);
    }
    for (let k of [x + u, x - d]) {
      if (visited[k] === 0 && k >= 1 && k <= f) {
        visited[k] = 1;
        queue.push(k);
      }
    }
  }
  if (flag === false) {
    break;
  }
  cnt++;
}
if (flag) {
  console.log("use the stairs");
}

✔ 알고리즘 : BFS

✔ 이동횟수의 최소값을 구하는 문제

✔ 이미 도착한 층을 visited 배열을 통해 검사하였다.

❗ 주의 : 음수층과 건물의 총높이를 벗어나는 층은 도달할 수 없다

if (visited[k] === 0 && k >= 1 && k <= f) {
    visited[k] = 1;
    queue.push(k);
}

✔ 난이도 : 백준 기준 골드 5

좋은 웹페이지 즐겨찾기