백준 2745 JavaScript
수정하기
문서 생성 2021-11-18 15:00:00 최근 수정 2021-11-19 08:02:46
문제
풀이
BAEKJOON-11005를 반대로 푼다고 생각하면 된다.
예를 들어 2진법의 수를 다시 10진법으로 바꾸려면 다음과 같이 자릿수와 진법의 거듭제곱을 곱해서 다 더해주면 된다. 진법의 거듭제곱은 오른쪽부터 한자리가 높아질 수록 0부터 1씩 높아진다.
자릿수는 숫자가 아닌 경우 BAEKJOON-11005와 반대로 String.charCodeAt(0)
을 한 값에 55를 빼주면 된다.
여기서 중요한 점은 처음 가져온 숫자를 reverse
를 이용해 순서를 바꿔줘야 한다는 점이다.
const readFileSyncPath = require('path').basename(__filename).replace(/js$/, 'txt');// const readFileSyncPath = '/dev/stdin';let input = require('fs').readFileSync(readFileSyncPath).toString().trim().split(' ');let N = input[0].split('');N = N.reverse();let B = input[1];let result = 0;for (let i = 0; i < N.length; i++) {result += (B ** i) * getNumber(N[i]);}console.log(result);function getNumber(code) {if (isNaN(parseInt(code))) {return code.charCodeAt(0) - 55;} else {return parseInt(code);}}