๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 124 ๋‚˜๋ผ์˜ ์ˆซ์ž

by Fomagran ๐Ÿ’ป 2022. 2. 14.
728x90
๋ฐ˜์‘ํ˜•

 

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - 124 ๋‚˜๋ผ์˜ ์ˆซ์ž

 

programmers.co.kr


Solution

 

1. 3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ answer๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

 

3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ answer ๋ฐฐ์—ด์— ๋„ฃ๋˜, ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ผ๋ฉด 3๋ฒˆ์งธ ๊ฐ’์ด๋ฏ€๋กœ 4๋กœ ๋Œ€์ฒดํ•ด์„œ ๋„ฃ์–ด์ค€๋‹ค.

 

2. ์ˆซ์ž๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

 

3์œผ๋กœ ๋‚˜๋ˆ ๊ฐ€๋ฉด์„œ ํ˜„์žฌ ์ˆซ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š”๋ฐ, ์ˆซ์ž๊ฐ€ 1,2,4 ์ด๋ ‡๊ฒŒ 3๊ฐœ๊นŒ์ง€ ํ—ˆ์šฉ๋˜๊ธฐ ๋–„๋ฌธ์—

 

0์œผ๋กœ ๋‚˜๋ˆ ์ง„ ๊ฒƒ์€ 3๋ฒˆ์งธ๋ผ๋Š” ์˜๋ฏธ์—ฌ์„œ ๋‹ค์Œ ์ˆซ์ž๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์•ˆ๋˜๋ฏ€๋กœ ๋ชซ์— -1์„ ํ•ด์ค€๋‹ค.

 

๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด 3์œผ๋กœ ๋‚˜๋ˆ ์ค€ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

3. ๋ฐฐ์—ด์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ๋’ค์ง‘๊ณ  ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ฐฐ์—ด์— ์Œ“์ธ ์ˆซ์ž๋Š” ๊ฑฐ๊พธ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ revese() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋’ค์ง‘์–ด ์ฃผ๊ณ ,

 

์ •๋‹ต์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— join('') ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ํ•ฉ์ณ์ค€๋‹ค.


Source Code

 

function solution(n) {
    const nums = [4,1,2]
    let answer = []
    let current = n
    while (current > 0) {
        answer.push(nums[current%3])
        current = current%3 == 0 ? Math.floor(current/3-1) : Math.floor(current/3)
    }
    return answer.reverse().join('')
}
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€