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