PS/백준

[ 백준_16953 ] A -> B ( d/bfs - 자바스크립트 )

KimBangg 2021. 6. 25. 20:23

문제

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

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

How to Solve ?

 

[1] DFS

 

function dfs(x, count) {
  if (x === b) {
    return console.log(count);
  } else {
    if (x * 2 <= b) {
      dfs(x * 2, count + 1);
    }
    if (x * 10 + 1 <= b) {
      dfs(x * 10 + 1, count + 1);
    }
  }
}

let count = 1;
const [a, b] = [2, 162];
dfs(a, count);

[2] BFS

 

function solution() {
  const queue = [a, 1];

  while (queue.length) {
    let n = queue.shift();
    let count = queue.shift();

    if (n === b) {
      return console.log(count);
    } else {
      if (n * 2 <= b) {
        queue.push(n * 2, count + 1);
      }
      if (n * 10 + 1 <= b) {
        queue.push(n * 10 + 1, count + 1);
      }
    }
  }

  console.log(-1);
}

let count = 1;
const [a, b] = [2, 162];
solution();