Skip to content
On this page

백준 11005 JavaScript

수정하기
문서 생성 2021-11-18 14:01:17 최근 수정 2021-11-19 08:07:09
On this page

문제

백준 11005 - 진법 변환 2

풀이

보통 진법을 변환하는 방법으로 풀었다.
예를 들어 10진법인 수를 2진법으로 변환하려면 다음과 같이 계산해야 한다.

boj 11005
진법 변환
변환하려는 숫자를 2로 계속 나누어 몫이 1이될 때까지 나누어준다. 그리고 나눠진 마지막 몫 1과 나머지들을 역순으로 가져오면 그 값이 2진수이다.
자바스크립트로 whie문을 통해 숫자를 해당 진법으로 계속 나눠주고 그때마다 나머지 값을 배열에 넣는다. 여기서 진법의 수가 10이상인 경우에는 숫자에 55를 더하고 String.fromCharCode를 이용해 아스키 코드로 변경했다.
숫자 1055를 더하면 65이고 그게 아스키 코드로하면 A이기 때문이다. 마지막으로 배열에 저장된 나머지들을 reverse() 메소드를 사용해 역순으로 가져온다.
whie 문의 조건은 N > 0 으로 한 이유는 몫이 0이 될 때까지 계산하면 마지막 나머지가 마지막 몫에 해당되기 때문이다.

const readFileSyncPath = require('path').basename(__filename).replace(/js$/, 'txt');
// const readFileSyncPath = '/dev/stdin';
let input = require('fs').readFileSync(readFileSyncPath).toString().trim().split(' ');
input = input.map(v => Number(v));
let N = input[0];
let B = input[1];
let result = [];
while (N > 0) {
result.push(getCode(N % B));
N = parseInt(N / B);
}
console.log(result.reverse().join(''));
function getCode(number) {
if (number >= 10) {
return String.fromCharCode(number + 55);
} else {
return number;
}
}