๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[Algorithm] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.1 : 3์ง„๋ฒ• ๋’ค์ง‘๊ธฐ

by ์ฝ”๋”ฉ๊ณต์ฑ… 2022. 11. 18.
๋ฐ˜์‘ํ˜•

3์ง„๋ฒ• ๋’ค์ง‘๊ธฐ

์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. n์„ 3์ง„๋ฒ• ์ƒ์—์„œ ์•ž๋’ค๋กœ ๋’ค์ง‘์€ ํ›„, ์ด๋ฅผ ๋‹ค์‹œ 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ ์กฐ๊ฑด

* n์€ 1 ์ด์ƒ 100,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.


์ž…์ถœ๋ ฅ ์˜ˆ

n result
45 7
125 229

์ž…์ถœ๋ ฅ ์˜ˆ #1

n(10์ง„๋ฒ•) n(3์ง„๋ฒ•) ์•ž๋’ค ๋ฐ˜์ „(3์ง„๋ฒ•) 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„
45 1200 0021 7

* ๋”ฐ๋ผ์„œ 7์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์ž…์ถœ๋ ฅ ์˜ˆ #2

n(10์ง„๋ฒ•) n(3์ง„๋ฒ•) ์•ž๋’ค ๋ฐ˜์ „(3์ง„๋ฒ•) 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„
125 11122 22111 229

* ๋”ฐ๋ผ์„œ 229๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๋ฌธ์ œ ํ’€์ด

n์ด 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ unshift๋ฅผ ํ†ตํ•ด n์„ 3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ’์„ answer์— ์ €์žฅ์‹œํ‚ค๊ณ  n์—๋Š” n์„ 3์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์˜ ๋ฐ˜์˜ฌ๋ฆผ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” reduce์™€ Math.pow๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ n์„ 3์ง„๋ฒ•, ์•ž๋’ค๋ฐ˜์ „ 3์ง„๋ฒ•, 10์ง„๋ฒ• ํ‘œํ˜„ ๋“ฑ์„ ํ•œ๋‹ค.

function solution(n) {
    const answer = [];
    while(n !== 0) {
        answer.unshift(n % 3);
        n = Math.floor(n/3);
    }
    return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0);   
}

๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ์‹

parseInt์™€ toString, reverse(), join์„ ํ†ตํ•ด 1์ค„๋กœ ๊ฐ„๋‹จํžˆ ํ’€์–ด๋‚ด๋Š” ๋ฐฉ์‹๋„ ์กด์žฌํ•œ๋‹ค.

const solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


Reference Book

JavaScript
HTML
CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.