(1).백준 15296번 Sum Squared Digits Function는 해당 숫자를 주어진 진수로 변경한 다음

각 자릿수의 제곱의 합을 출력해야 하는 문제였는데

일단 간단하게 진수 변환을 toString으로 할 수 있었지만 에러가 발생했고

원인을 파악해보니 a~f까지의 경우에는 숫자가 아니기 때문에

해당 내용을 변환해주는 map을 만든 다음 값을 변경해서 제곱하는 방식으로 해결했다.

 

사실 아스키 코드로 변환 후 뺴서 진행해도 되지만

오히려 그게 연산을 한번 더 수행할 것 같아서

초반 하드코딩?같은 map을 만들어야 하긴 하지만 이 부분이 더 시간복잡도 면에서 절약될 것 같다.

const input = `3
1 10 1234
2 3 98765
3 16 987654321`.split('\n').map(el => el.split(' '))

const map = {
    '0' : 0,
    '1' : 1,
    '2' : 2,
    '3' : 3,
    '4' : 4,
    '5' : 5,
    '6' : 6,
    '7' : 7,
    '8' : 8,
    '9' : 9,
    'a' : 10,
    'b' : 11,
    'c' : 12,
    'd' : 13,
    'e' : 14,
    'f' : 15,
}

for(let i = 1 ; i < input.length ; i++){
    const [k,b,n] = input[i]
    const digit = Number(n).toString(b)
    let sum = 0

    for(let j = 0 ; j < digit.length ; j++){
        sum += map[digit[j]] ** 2
    }

        
    console.log(`${k} ${sum}`)
}

'회고' 카테고리의 다른 글

[개발일지] - 714  (0) 2025.06.17
[개발일지] - 713(창립기념일)  (0) 2025.06.16
[개발일지] - 711(주말)  (0) 2025.06.15
[개발일지] - 710  (0) 2025.06.13
[개발일지] - 709  (0) 2025.06.12

+ Recent posts