[백준] 자바스크립트 2745번

DONNIE·2023년 6월 1일
0

algorithms

목록 보기
32/32

문제

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 fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');

const [N,B] = input[0].split(' ')

function convertToDecimal (number, base) {
	let reslut = 0;
    const digits = N.split('');
    for(let i=0; i<digits.length; i++) {
    let digit = digits[i];
    let value=0;
    
    if(digit>='A' && digit<='Z') {
    	value = digit.charCodeAt(0)-55; // A가 65부터 시작하는데 여기선 10부터 시작하니가 맵핑해주려고 뺌
    }else {
    	value = parseInt(digit);
    }
    result += value * Math.pow(base, digits.length-1-i);
	}
    return result;
}

const decimal = converToDecimal(N, parseInt(B));

console.log(decimal);
  • Math.pow(base, digits.length-1-i)
    현재 자리의 진수에 해당하는 값을 계산 (거듭제곱)
profile
후론트엔드 개발자

0개의 댓글