kakasoo

[node.js] 진법 변환2 ( 백준 11005번 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 진법 변환2 ( 백준 11005번 )

카카수(kakasoo) 2021. 4. 5. 19:47
반응형
const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

rl.on("line", (line) => {
    main(line);
    rl.close();
}).on("close", () => {
    process.exit();
});

/**
 *
 * @param {string} line
 */
const main = (line) => {
    let [N, B] = line.split(" ");
    N = Number(N);

    const numbers = [];
    let square = 0;
    while (N >= B) {
        const value = N % B;
        numbers.push({ value: value, square: square++ });
        N = parseInt(N / B);
    }
    numbers.push({ value: N, square: square++ });

    let answer = "";
    numbers.reverse().forEach((el) => {
        if (el.value > 9) {
            answer += String.fromCharCode(el.value + 65 - 10);
        } else {
            answer += el.value;
        }
    });
    console.log(answer);
};

진법 변환 1은 간단하게 풀었는데, 변환 2는 상대적으로 어려웠다.
사실 같은 문제다, A 에서 B로 변환한 것을 이번엔 역순으로 B에서 A로 변환하는 것이기 때문에.
근데 역으로 생각하려니깐 꼬였다.
그래서 다시 원래 방식대로 sqaure를 넣어서 생각해봤다.

이번에는 sqaure 없이 풀 수 있는데, 하다가 그냥 넣었다.
알고리즘의 효율성을 크게 저해하지 않는 요소인데다가, 사실 이거 없이 생각하려다보니 머리에 생각이 잘 정리되지 않는 느낌인지라... 앞으로는 그냥 친절하게 코드를 짜도록 하자.
괜히 short coding 한다고 까불지 말자.

반응형