프로그래머스 숫자변환하기
https://school.programmers.co.kr/learn/courses/30/lessons/154538
x
를 y
로 변환하기 위해 필요한 최소 연산 횟수’ 부분에서 BFS으로 접근 판단function solution(x: number, y: number, n: number) {
const queue: [number, number][] = [];
const visited = new Set();
queue.push([x, 0]);
visited.add(x);
while (queue.length > 0) {
const [x, count] = queue.shift()!;
if (x === y) return count;
const nextNumbers = [x + n, x * 2, x * 3];
for (const num of nextNumbers) {
if (visited.has(num) || num > y) continue;
queue.push([num, count + 1]);
visited.add(num);
}
}
return -1;
}
function solution(x: number, y: number, n: number) {
const queue: [number, number][] = [];
const visited = new Set();
queue.push([y, 0]);
visited.add(y);
while (queue.length > 0) {
const [current, count] = queue.shift()!;
if (current === x) return count;
const nextNumbers = [];
if (current % 2 === 0) nextNumbers.push(current / 2);
if (current % 3 === 0) nextNumbers.push(current / 3);
nextNumbers.push(current - n);
for (const num of nextNumbers) {
if (visited.has(num) || num < x) continue;
queue.push([num, count + 1]);
visited.add(num);
}
}
return -1;
}