{ if (item >= '0' && item <= '9') return parseInt(item); return (item.charCodeAt(0) - 55) }) let sum = 0; for (let i = 0; i < newList.length; i++) { sum += newList[i] * (parseInt(base[1]) ** (newList.length-i-1)); } console.log(sum); "> { if (item >= '0' && item <= '9') return parseInt(item); return (item.charCodeAt(0) - 55) }) let sum = 0; for (let i = 0; i < newList.length; i++) { sum += newList[i] * (parseInt(base[1]) ** (newList.length-i-1)); } console.log(sum); "> { if (item >= '0' && item <= '9') return parseInt(item); return (item.charCodeAt(0) - 55) }) let sum = 0; for (let i = 0; i < newList.length; i++) { sum += newList[i] * (parseInt(base[1]) ** (newList.length-i-1)); } console.log(sum); ">
<aside> 💡
내가 작성한 코드
</aside>
const fs = require('fs');
let input = (process.platform === 'linux'? fs.readFileSync('/dev/stdin').toString() :
"ZZZZZ 36"
).trim();
let base = input.split(' ');
const baseList = base[0].split('');
const newList = baseList.map(item => {
if (item >= '0' && item <= '9') return parseInt(item);
return (item.charCodeAt(0) - 55)
})
let sum = 0;
for (let i = 0; i < newList.length; i++) {
sum += newList[i] * (parseInt(base[1]) ** (newList.length-i-1));
}
console.log(sum);
<aside> 💡
최적의 코드
</aside>
const fs = require('fs');
let [num, base] = (process.platform === 'linux'? fs.readFileSync('/dev/stdin').toString() :
"ZZZZZ 36"
).trim().split(' ');
// parseInt의 두 번째 인자로 진법을 직접 지정
console.log(parseInt(num, +base));
<aside> 💡
코드 개선
</aside>
let sum = 0;
for (let i = 0; i < newList.length; i++) {
sum += newList[i] * (parseInt(base[1]) ** (newList.length-i-1));
}
/* reduce 함수를 이용하여 함수형 프로그래밍에 조금 더 가깝게 작성 */
const sum = newList.reduce((acc, curr, idx) => {
return acc + curr * (parseInt(base[1]) ** (newList.length-idx-1));
}, 0);