Development/Program Solving

[백준 10829번] 이진수 변환 (feat. NodeJS)

이쥬딩 2021. 2. 5. 15:38
728x90

 

10829번: 이진수 변환

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)

www.acmicpc.net

문제

풀이

반복적으로 2로 나누기를 하므로, 재귀 알고리즘을 사용해서 풀었다.

N / 2 === 1 일 때 더 이상 나누기를 못하니 종료조건으로 설정했다.

const readline = require("readline");
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });

let input;
let result = "";
const onInput = (value) => (input = parseInt(value));

const binaryNumber = (number) => {
  if (number === 1) {
    return (result += number);
  } else {
    result += number % 2;
    return binaryNumber(Math.floor(number / 2));
  }
};

const onClose = () => {
  const answer = binaryNumber(input);
  console.log(Array.from(answer).reverse().join(""));
  process.exit();
};

rl.on("line", onInput).on("close", onClose);

재귀 알고리즘 학습을 위해 백준에서 제일 쉬운 재귀 문제를 풀어봤다.

그래도 이건 한 15분 안에 풀어서 다행이다.

재귀 개념은 파악한 것 같은데 심화로 들어가면 규칙을 못 찾겠다....

더 공부해야지

 


728x90