문제
소스 코드
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = require('fs')
.readFileSync(filePath)
.toString()
.trim()
.split('\n');
const [N, K] = input[0].split(' ').map(Number);
const MAX_SIZE = 100000 + 1;
/*
순간이동이 걷는 것보다 우선순위가 높다
*/
function bfs() {
const queue = [N];
const visited = [];
visited[N] = 1;
while (queue.length) {
const currentPos = queue.shift();
if (currentPos === K) return visited[K] - 1;
if (currentPos * 2 < MAX_SIZE && !visited[currentPos * 2]) {
queue.unshift(currentPos * 2);
visited[currentPos * 2] = visited[currentPos];
}
if (currentPos + 1 < MAX_SIZE && !visited[currentPos + 1]) {
queue.push(currentPos + 1);
visited[currentPos + 1] = visited[currentPos] + 1;
}
if (currentPos - 1 >= 0 && !visited[currentPos - 1]) {
queue.push(currentPos - 1);
visited[currentPos - 1] = visited[currentPos] + 1;
}
}
}
console.log(bfs());
'알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 백준 16987 (계란으로 계란치기, 자바스크립트) (0) | 2023.06.21 |
---|---|
[알고리즘 연습] 백준 14888 (연산자 끼워넣기, 자바스크립트) (0) | 2023.06.20 |
[알고리즘 연습] 백준 10971 (외판원 순회 2, 자바스크립트) (0) | 2023.06.16 |
[알고리즘 연습] 백준 1182 (부분수열의 합, 자바스크립트) (1) | 2023.06.15 |
[알고리즘 연습] 백준 2503 (숫자 야구, 자바스크립트) (0) | 2023.06.15 |