B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
const sol = (input) => {
const str = input.shift().split("").reverse();
const n = +input.shift();
let answer = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] >= "A" && str[i] <= "Z") {
str[i] = str[i].charCodeAt(0) - 55;
answer += str[i] * Math.pow(n, i);
} else {
str[i] = Number(str[i]);
answer += str[i] * Math.pow(n, i);
}
}
return answer;
};
console.log(sol(input));
문자열은 reverse해줘야 알맞은 자리에 넣을 수 있다.
10진법 이상의 진법에서 한자리의 10 이상의 수를 A,B,C~ 로 표현한다. A가 즉 10을 나타내는 것이다.
A의 아스키코드가 65임으로 -55를 해주면 진법을 바꿀 수 있는 것이다.