숫자를 특정한 진법으로 변환해주는 문제입니다. input_num에 바꿀 숫자, input_jin이 바꿀 진법입니다.
알파벳으로 들어오는 경우엔 charCodeAt()이라는 함수로 아스키코드 값을 통해 계산했습니다.
오늘은 빨리 풀고 코드도 괜찮은것 같아서 자신있게 chatGPT에게 풀어보라고 했습니다.
const isNumeric = n => !!Number(n) || n === "0";
var input_num = input.split(' ')[0];
var input_jin = parseInt(input.split(' ')[1]);
var num_arr = [];
var answer = 0;
for (var i = 0; i < input_num.length; ++i){
var num = input_num.charAt(i);
var real_num;
if (isNumeric(num)) {
real_num = parseInt(num);
}
else {
real_num = num.charCodeAt() - 55;
}
answer += real_num * (input_jin ** (input_num.length-i-1));
}
console.log(answer);
아직 모르는 javascript문법들이 좀 쓰이긴 했지만 char단위로 변환 함수를 만들어서 풀었군요. 예제도 제대로 나오고 제가 보기에도 틀린 곳은 없어보이는데 제출하면 틀렸다고 나오긴 하네요.
가끔 vs에선 되고 채점에선 틀린다던데 그 경우이지 않나 싶습니다.
char.charCodeAt() - 'A'.charCodeAt() + 10 이부분을 생각 못한게 아쉽네요.
A의 값을 그냥 빼면 되는거였는데 저는 굳이 55를 뺏네요.
const input_num = input[0];
const base = parseInt(input[1]);
const convertCharToDecimalValue = char => {
if ('0' <= char && char <= '9') {
return parseInt(char);
}
return char.charCodeAt() - 'A'.charCodeAt() + 10;
};
const answer = [...input_num].reverse().reduce((acc, char, idx) => {
return acc + convertCharToDecimalValue(char) * (base ** idx);
}, 0);
console.log(answer);