๐ ๋ฌธ์
๐งฉ ๊ตฌํ๊ณผ์ ๋ฐ ์ฝ๋
๊ฐ์ธ ํ ๊ธ ์์ญ์ ๊ตฌํ ๊ณผ์ ๊ณผ ์ฝ๋๋ฅผ ์์ ๋กญ๊ฒ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ฌ์ฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ์ด ๋ฐฉํฅ์ฑ
์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ ํน์ ๋ฉ์๋
์์
๊ตฌํ
- 1์ ์๋ฆฌ๊ฐ 1, 2, 4๋ก ๋ฐ๋ณต๋๋ ๋๋จธ์ง ์ฐ์ฐ์(%)๋ฅผ ์ฌ์ฉํด 0, 1, 2๋ฅผ ๋ณํํด๋ณด์.
- ์ฌ๋ฆผ ์๋ฆฌ *๋งํ
ํํธ: n%3===0์ผ ๋๋ง (n / 3) - 1ํ๋ฉด ๋๊ฒ ๋ค. ์กฐ๊ฑด 2๊ฐ๋ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
- JavaScript ๊ตฌํ ํํธ : while(n)
์ฝ๋
function solution(n) { var answer = ''; const world = [4,1,2]; while (n) { answer = world[n % 3] + answer; n = (n % 3 === 0) ? (n / 3) - 1 : Math.floor(n / 3); } return answer; }
์ ์
๊ตฌํ
๋งค๊ฐ๋ณ์ n์ 3์ผ๋ก ๋๋ ๋ค
- ๋๋จธ์ง โ 1์์๋ฆฌ ์๋ก
- ๋ชซ โ 10์ ์๋ฆฌ ์ซ์๋ก
- n์ด 3์๋ฐฐ์ โ ๋ชซ-1๋ก ๊ณ์ฐ!
- ๋ชซ์ด 0์ด ๋ ๋๊น์ง ๊ณ์ฐํ๋ค
0 โ 4๋ก ์นํํ๊ณ , 1,2๋ ๊ฐ๋ค.
์ฝ๋
def solution(n): answer = '' while n: if n%3: answer = str(n%3)+answer n//=3 else: answer = '4'+answer n=n//3-1 return answer
์ข
ํ
์ฝ๋
function solution(n) { const arr = ['4','1','2','4'] const str = [] if(n<=3){return arr[n]} while(n > 3){ if(n % 3 === 0){ str.unshift(arr[n%3]) n = Math.floor(n/3)-1 } else { str.unshift(arr[n%3]) n = Math.floor(n/3) } } str.unshift(arr[n]) return str.join('') }
์ ๊ทผ๋ฒ
- ์ฒ์์๋ 4 + 1 => 11๋ก ๋์ด๊ฐ๋ ๊ฑธ ์ด์ฉํด์ 1๋ถํฐ n๊น์ง ๊ตฌํด๋ณด๋ ค ํ์ผ๋ ํจ์จ์ฑ ํ ์คํธ๊น์ง ํต๊ณผํด์ผ ๋๊ธฐ ๋๋ฌธ์ 1๋ถํฐ n๊น์ง ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋๊ฑด ์๊ฐ์ ๋ถ๊ฐ๋ฅ
- ์์ ์ ncs ๊ณต๋ถํ ๋ 10์ง๋ฒ์ n์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๋ ๋ฌธ์ ๊ฐ์๊ฑฐ ๋ณด๋ฉด ๋๋ ์ ๋๋จธ์ง๋ ๋ชซ์ด๋ ์ด์ฉํด์ ์๋ฅผ ๊ตฌํ๋๊ฑธ ๋ณธ ๊ธฐ์ต์ด ๋์ 3๊ฐ์ฉ ๋ฐ๋ณต๋๋๊น 3์ผ๋ก ๋๋๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด๋ณด๋
4 / 3 = 1 , 4 % 3 = 1 => n=4์ผ๋ ๋ต์ 11 6 / 3 = 2, 6 % 3 = 0 => ??
n์ด 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ์๋ ์ ํํ์ง ์์ง๋ง ๋๋จธ์ง๊ฐ 0์ผ๋ก ๋์ค๋ฉด 4๋ก ๋ํ๋ด์ผ ํ๊ณ , ๋ชซ์ -1์ ํด์ค์ผ ๋๋? ๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋จ
๊ทธ๋์ n์ ๊ตฌํ๊ธฐ ์ํด์ n / 3์ ๊ฐ๊น์ง๋ ๊ตฌํด์ผ ๋๋ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค๋ดค๋๋ฐ, ์ ๋ต์ ๋ง๋๋ฐ ํจ์จ์ฑ์์ ํต๊ณผ๋ฅผ ๋ชปํจ
ํ์ด
44๋ผ๋ ์๋ฅผ ์์๋ก ๋ค๋ฉด ๋ชซ:14 ๋๋จธ์ง:2 โ ์ด 14๋ผ๋ ์์ ๊ฐ์ ๊ตฌํด์ ๊ทธ ๋ค์ 2๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๊ตฌํ๋ ๋ฐฉ์
- 14๋ ๋ชซ:4 ๋๋จธ์ง:2 โ 4๋ผ๋ ์๋ฅผ ๊ตฌํด์ 2๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋จ
- 4๋ ๋ชซ:1 ๋๋จธ์ง:1์ด๋ 11์ด๋ผ๋ ์๊ฐ ๋์ค๊ณ , 14๋ 11์ 2๋ฅผ ๋ถ์ฌ์ 112๊ณ , 44๋ 112์ 2๋ฅผ ๋ถ์ฌ์ 1122๊ฐ ๋จ
- ํ๋ง๋๋ก n์ด 3๋ณด๋ค ์์์ง๋๊น์ง ๊ณ์ ๋๋ ์ฃผ๋ฉด์ ๊ตฌํ๋ ๋๋จธ์ง๋ฅผ ๊ณ์ ๋ค์ ๋ถ์ฌ์ฃผ๋ฉด ๋จ
- 1,2,4๋ง ์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ด์ฉํด์ ๋๋จธ์ง๋ฅผ index๋ก ์ด์ฉํด์ ์ค์ ๊ฐ์ ๊ตฌํจ
์์ธ ์ผ์ด์ค(?)
- 45(๋ชซ:15,๋๋จธ์ง:0) -> 15 + 4 ๋ถ์ฌ์ค
- 15(๋ชซ:5,๋๋จธ์ง:0) -> 5 + 4 ๋ถ์ฌ์ค
- 5(๋ชซ:1,๋๋จธ์ง:2) -> 12์ด์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด 1244๊ฐ ๋ต์ด์ด์ผ ํ์ง๋ง, ์ ๋ต์ 1124
- n์ด 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ฉด ๋๋จธ์ง๋ 4๊ฐ ๋๊ณ , ๊ทธ ๋ค์์ผ๋ก ๊ณ์ฐํ n์ -1์ ํด์ค์ผ ํจ
์ฌ์
๊ตฌํ
1 | 1 | 6 | 14 |
2 | 2 | 7 | 21 |
3 | 4 | 8 | 22 |
4 | 11 | 9 | 24 |
5 | 12 | 10 | 41 |
11 | 42 | 17 | 122 |
12 | 44 | 18 | 124 |
13 | 111 | 19 | 141 |
14 | 112 | 20 | 142 |
15 | 114 | 21 | 144 |
16 | 121 | 22 | 211 |
- ๋ฑํ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ์์ด๋ณด์
- DP์ ์ ์ฌํ๊ฒ ์ ๋ ฅ๊ฐ N์ ๋์ํ๋ ๊ฐ๋ค์ ๋ฐฐ์ด์ ๋ด์๋์์ผ ํ๋์งโ 50,000,000 ๋ฒ์ ์ ํ
- 3์ง๋ฒ(0,1,2)๋ฅผ 1,2,4๋ก ๋ฐ๊พธ๋ฉด ๋๋ ๊ฒ ์๋์ง?
- 0,1,2๋ 3์ ๋๋จธ์ง
- ๋ณํ๋ ์์ ๋ง์ง๋ง ์๋ฆฌ๋ N%3์ด ๋ง์ (0โ4)
- N์ 3์ผ๋ก ๋๋ ๋ชซ๊ณผ ๋๋จธ์ง๋ฅผ ๊ตฌํจ, ๋๋จธ์ง๋ ์ ์ผ ๋ค์ ๋ถํ๊ณ ๋ชซ์ ์์ ๋ถํ. ๋๋จธ์ง๊ฐ 0์ด๋ผ๋ฉด, 4๋ก ๋ฐ๊พธ๊ณ ๋ชซ์์ 1์ ๋บ
- ๋ชซ์ ๋ 3์ผ๋ก ๋๋์ด ๋ชซ๊ณผ ๋๋จธ์ง๋ก ๋ถ๋ฆฌ
์ฝ๋
function solution(n) { const stack = [] while(n>0){ let quo = Math.floor(n/3) let mod = n%3 if(mod===0){ stack.unshift(4) n=quo-1 } else{ stack.unshift(mod) n=quo } } return stack.join(''); } // 1. N์ 3์ผ๋ก ๋๋ ๋ชซ๊ณผ ๋๋จธ์ง๋ฅผ ๊ฐ์ ธ์ด // 2-1. ๋๋จธ์ง๊ฐ 1,2์ผ ๊ฒฝ์ฐ ์ ์ผ ๋ค์ ๋ถํ // 2-2. ๋๋จธ์ง๊ฐ 0์ผ ๊ฒฝ์ฐ, ๋ชซ์ 1๋นผ๊ณ ๋๋จธ์ง๋ฅผ 4๋ก ๋ณํ // 3. ์๊ธด ๋ชซ์ ๋ํด ํด๋น ๊ณผ์ ์ ๋ฐ๋ณต // 4. ๋ชซ์ด 0์ด ๋๊ฑฐ๋, ์์๊ฐ ๋๋ฉด ํ์ถ ํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ
5๏ธโฃ
โ๏ธ ํ๊ธฐ
๋ฌธ์ ๋ฅผ ํ๊ณ ๋๋ ์ , ๋งํ๋ ๋ถ๋ถ ํน์ ๊ฐ์ ์ฌํญ ๋ฑ์ ์์ ๋กญ๊ฒ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
์์
- ์๊ฐ ๋ด ๋ชป ํ์ด์ ํํธ๋ฅผ ์ป์ด๊ฐ๋ฉฐ ํ์๋ค. ์ด์ ์ปคํผ์ฑ์์ ๋ฉํ ๋์ ๋ง์ ๋ฃ๊ณ โ์ด๋ฐ์๋ ๋ฌธ์ ํธ๋ ๋ฐ ์ค๋ ๊ณ ๋ฏผํ๊ธฐ๋ณด๋ค ๋ฐฐ์ฐ๋ ๊ฒ ๋ซ๋ค.โ๋ผ๋ ์๊ฐ์ด ๋ค์ด์ ์ฃ์ฑ ๊ฐ ๊ฐ์ง์ง ์๊ณ ํํธ๋ฅผ ์ป์ด๋ณด๊ธฐ๋ก ํ๋ค.
- ๋ฌธ์ ์ดํด + JavaScript ๋ฌธ๋ฒ ์ ์ฉ์ด ๋ณ๋๋ก ๋ค์ด์ ์ค๋ ๊ฑธ๋ฆฐ๋ค. ์ฐ์ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ๊ตฌ์กฐ ์ง๋ ์ฐ์ต + JavaScript ๋ฌธ๋ฒ์ ๋ ์ต์ํด์ง๋ ์ฐ์ต์ด ํ์ํ๋ค.
- ์ค๋๋ง์ ์ฝ๋ฉํ ์คํธ๋ฅผ ํ๋ค ๋ณด๋ ์ฒ์ ํ๋ ๋๋ก ๋์๊ฐ ๊ฒ ๊ฐ์๋ค.
์ ์
- ์ฒ์์๋ 3์ง๋ฒ๊ณผ ์ ์ฌํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ง๋ง, ์ซ์๋ฅผ ์นํํ๋ ๊ท์น์ ์ฐพ์ง ๋ชปํ๋ค.
- ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ผ ์์ด์ ์ธ ์์ ํ์์ ์๋ํ๋๋ฐ, carry๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ฝ์ง ์์๋ค.
- ๊ฒฐ๊ตญ ํด์ค์ ๋์์ ์ด์ง ๋ฐ์๋ค..ใ
- ๋์ ๋๋ฆฌ๋ก ๊ตฌํํ๋ ค ํ๋๋ฐ ์๊ฐ์ด๊ณผ๋ก ์คํจ! ๊ทธ๋ฅ ์์ฐจ์ ์ผ๋ก ๊ณ์ฐํ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ์๋ค.
- ์ค๋๋ง์ ์ฝํ ์ฐ์ต์ด๋ผ ์ฝ์ง ์์๋ค. ๋งค์ผ ์คํฐ๋ํ๋ฉด์ ๊ฐ์ ๋์ฐพ์์ผ๊ฒ ๋ค!
์ข
ํ
- ์ง์ ๊ณผ์ ์ ํ๋ฒ์ฉ ์์ผ๋ก ์ฐ๋ฉด์ ๋ฐ๋ผ๊ฐ๋ดค์ผ๋ฉด ์๊ฐ๋ณด๋ค ๋ ๋นจ๋ฆฌ ํ ์ ์์์ ๊ฒ ๊ฐ๋ค..
์ฌ์
- ๊ท์น์ฑ๋ง ์ฐพ์ผ๋ฉด ๊ทธ๋ฆฌ ์ด๋ ต์ง ์๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์์ผ๋, ์ฝ์ง ์์์..