yunicornlab

백준 1697번 숨바꼭질 JavaScript 풀이 [BFS] 본문

Coding Test/Practice

백준 1697번 숨바꼭질 JavaScript 풀이 [BFS]

yunicornlab 2024. 7. 21. 21:29
반응형

백준 1697번 숨바꼭질 문제를 자바스크립트로 BFS 알고리즘을 이용해서 풀어보았다. 

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

 

// 큐 자료구조
class Queue {
  constructor() {
    this.items = {};
    this.head = 0;
    this.tail = 0;
  }

  enqueue(element) {
    this.items[this.tail] = element;
    this.tail++;
  };

  dequeue() {
    const element = this.items[this.head];
    delete this.items[this.head];
    this.head++;
    return element;
  };

  getLength() {
    return this.tail - this.head;
  }
}

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let [n, k] = input[0].split(' ').map(Number);

// 큐
let queue = new Queue();
queue.enqueue(n);
// 방문처리
let distTable = new Array(100_001).fill(0);

while (queue.getLength() != 0) {
  let position = queue.dequeue();

  if (position == k) {
    console.log(distTable[position]);
    break;
  }

  for (let i of [position-1, position+1, position*2]) {
    if (distTable[i] == 0) {
      distTable[i] = distTable[position] + 1;
      queue.enqueue(i);
    }
  }
}
반응형