백준 11005 JavaScript
문제
풀이
보통 진법을 변환하는 방법으로 풀었다.
예를 들어 10진법인 수를 2진법으로 변환하려면 다음과 같이 계산해야 한다.
자바스크립트로 whie
문을 통해 숫자를 해당 진법으로 계속 나눠주고 그때마다 나머지 값을 배열에 넣는다. 여기서 진법의 수가 10이상인 경우에는 숫자에 55
를 더하고 String.fromCharCode
를 이용해 아스키 코드로 변경했다.
숫자 10
에 55
를 더하면 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;}}
Edit this page
Last updated on 3/2/2022