์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์ฝ๋ ํฌ๋ฉง
- icecandidate
- router v6
- ์ด๋ฏธ์ง ์์
- ๋ฆฌ๋์ค ํดํท
- ๊ณผ์ ํ ์คํธ
- Redux toolkit
- ๋ธ๋ฃจํธํฌ์ค
- DP
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- custom hook
- ์นด์นด์ค
- ๋ฐฑ์ค
- ์นด์นด์ค์ฑ์ฉ
- ์ฝํ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ด๋ถํ์
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- JavaScript
- ๋์ ๊ณํ๋ฒ
- js
- TypeScript
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- React
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ์ฝ๋ฉํ ์คํธ
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- ๋๋๊ทธ ์ด๋ฒคํธ
- Node.js
- Today
- Total
๐ฅ dev-ruby
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ]์์ถ - javascript <2018 KAKAO BLIND RECRUITMENT> ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ]์์ถ - javascript <2018 KAKAO BLIND RECRUITMENT>
ruby_s 2021. 11. 21. 18:12๋ฌธ์ ์ค๋ช
์ ์ ์ฌ์ ์ดํผ์น๋ ์นด์นด์คํก์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์์ถํ์ฌ ์ ์ก ํจ์จ์ ๋์ด๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ๋ฉ์์ง๋ฅผ ์์ถํ๋๋ผ๋ ์ ๋ฌ๋๋ ์ ๋ณด๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ฏ๋ก, ์์ถ ์ ์ ์ ๋ณด๋ฅผ ์๋ฒฝํ๊ฒ ๋ณต์ ๊ฐ๋ฅํ ๋ฌด์์ค ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
์ดํผ์น๋ ์ฌ๋ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ ์ค์์ ์ฑ๋ฅ์ด ์ข๊ณ ๊ตฌํ์ด ๊ฐ๋จํ LZW(Lempel–Ziv–Welch) ์์ถ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค. LZW ์์ถ์ 1983๋ ๋ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท์ธ GIF ๋ฑ ๋ค์ํ ์์ฉ์์ ์ฌ์ฉ๋์๋ค.
LZW ์์ถ์ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ๊ธธ์ด๊ฐ 1์ธ ๋ชจ๋ ๋จ์ด๋ฅผ ํฌํจํ๋๋ก ์ฌ์ ์ ์ด๊ธฐํํ๋ค.
- ์ฌ์ ์์ ํ์ฌ ์ ๋ ฅ๊ณผ ์ผ์นํ๋ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด w๋ฅผ ์ฐพ๋๋ค.
- w์ ํด๋นํ๋ ์ฌ์ ์ ์์ธ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ ๋ ฅ์์ w๋ฅผ ์ ๊ฑฐํ๋ค.
- ์ ๋ ฅ์์ ์ฒ๋ฆฌ๋์ง ์์ ๋ค์ ๊ธ์๊ฐ ๋จ์์๋ค๋ฉด(c), w+c์ ํด๋นํ๋ ๋จ์ด๋ฅผ ์ฌ์ ์ ๋ฑ๋กํ๋ค.
- ๋จ๊ณ 2๋ก ๋์๊ฐ๋ค.
์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ฌธ ๋๋ฌธ์๋ง ์ฒ๋ฆฌํ๋ค๊ณ ํ ๋, ์ฌ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๊ธฐํ๋๋ค. ์ฌ์ ์ ์์ธ ๋ฒํธ๋ ์ ์๊ฐ์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, 1๋ถํฐ ์์ํ๋ค๊ณ ํ์.
์์ธ ๋ฒํธ | 1 | 2 | 3 | ... | 24 | 25 | 26 |
๋จ์ด | A | B | C | ... | X | Y | Z |
์๋ฅผ ๋ค์ด ์ ๋ ฅ์ผ๋ก KAKAO๊ฐ ๋ค์ด์จ๋ค๊ณ ํ์.
- ํ์ฌ ์ฌ์ ์๋ KAKAO์ ์ฒซ ๊ธ์ K๋ ๋ฑ๋ก๋์ด ์์ผ๋, ๋ ๋ฒ์งธ ๊ธ์๊น์ง์ธ KA๋ ์์ผ๋ฏ๋ก, ์ฒซ ๊ธ์ K์ ํด๋นํ๋ ์์ธ ๋ฒํธ 11์ ์ถ๋ ฅํ๊ณ , ๋ค์ ๊ธ์์ธ A๋ฅผ ํฌํจํ KA๋ฅผ ์ฌ์ ์ 27 ๋ฒ์งธ๋ก ๋ฑ๋กํ๋ค.
- ๋ ๋ฒ์งธ ๊ธ์ A๋ ์ฌ์ ์ ์์ผ๋, ์ธ ๋ฒ์งธ ๊ธ์๊น์ง์ธ AK๋ ์ฌ์ ์ ์์ผ๋ฏ๋ก, A์ ์์ธ ๋ฒํธ 1์ ์ถ๋ ฅํ๊ณ , AK๋ฅผ ์ฌ์ ์ 28 ๋ฒ์งธ๋ก ๋ฑ๋กํ๋ค.
- ์ธ ๋ฒ์งธ ๊ธ์์์ ์์ํ๋ KA๊ฐ ์ฌ์ ์ ์์ผ๋ฏ๋ก, KA์ ํด๋นํ๋ ์์ธ ๋ฒํธ 27์ ์ถ๋ ฅํ๊ณ , ๋ค์ ๊ธ์ O๋ฅผ ํฌํจํ KAO๋ฅผ 29 ๋ฒ์งธ๋ก ๋ฑ๋กํ๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์ ๊ธ์ O์ ํด๋นํ๋ ์์ธ ๋ฒํธ 15๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ฌ ์ ๋ ฅ(w) | ๋ค์ ๊ธ์(c) | ์ถ๋ ฅ | ์ฌ์ ์ถ๊ฐ(w+c) |
K | A | 11 | 27: KA |
A | K | 1 | 28: AK |
KA | O | 27 | 29: KAO |
O | 15 |
์ด ๊ณผ์ ์ ๊ฑฐ์ณ ๋ค์ฏ ๊ธ์์ ๋ฌธ์ฅ KAKAO๊ฐ 4๊ฐ์ ์์ธ ๋ฒํธ [11, 1, 27, 15]๋ก ์์ถ๋๋ค.
์ ๋ ฅ์ผ๋ก TOBEORNOTTOBEORTOBEORNOT๊ฐ ๋ค์ด์ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ถ์ด ์งํ๋๋ค.
ํ์ฌ ์ ๋ ฅ(w)๋ค์ ๊ธ์(c)์ถ๋ ฅ์ฌ์ ์ถ๊ฐ(w+c)
T | O | 20 | 27: TO |
O | B | 15 | 28: OB |
B | E | 2 | 29: BE |
E | O | 5 | 30: EO |
O | R | 15 | 31: OR |
R | N | 18 | 32: RN |
N | O | 14 | 33: NO |
O | T | 15 | 34: OT |
T | T | 20 | 35: TT |
TO | B | 27 | 36: TOB |
BE | O | 29 | 37: BEO |
OR | T | 31 | 38: ORT |
TOB | E | 36 | 39: TOBE |
EO | R | 30 | 40: EOR |
RN | O | 32 | 41: RNO |
OT | 34 |
์ ๋ ฅ ํ์
์ ๋ ฅ์ผ๋ก ์๋ฌธ ๋๋ฌธ์๋ก๋ง ์ด๋ค์ง ๋ฌธ์์ด msg๊ฐ ์ฃผ์ด์ง๋ค. msg์ ๊ธธ์ด๋ 1 ๊ธ์ ์ด์, 1000 ๊ธ์ ์ดํ์ด๋ค.
์ถ๋ ฅ ํ์
์ฃผ์ด์ง ๋ฌธ์์ด์ ์์ถํ ํ์ ์ฌ์ ์์ธ ๋ฒํธ๋ฅผ ๋ฐฐ์ด๋ก ์ถ๋ ฅํ๋ผ.
์ ์ถ๋ ฅ ์์
msg | answer |
KAKAO | [11, 1, 27, 15] |
TOBEORNOTTOBEORTOBEORNOT | [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] |
ABABABABABABABAB | [1, 2, 27, 29, 28, 31, 30] |
๋ด๊ฐ ํผ ํ์ด
function solution(msg) {
const dictionary = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
const idxnum = [];
while(msg.length !== 0){
let w = "";
for(let i=1; i<=msg.length; i++){
const c = msg.substring(0, i);
if(!dictionary.includes(c)){
dictionary.push(c);
break;
}
w = c;
}
idxnum.push(dictionary.indexOf(w)+1);
msg = msg.substr(w.length);
}
return idxnum;
}
msg์์ ํ์ฌ ์ ๋ ฅ์ ๊ณ์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๋ก์ง์ ์งฐ๋ค.
1. ์ฃผ์ด์ง ๋ฌธ์ ์ฒ๋ผ dictionary์ ๋ฏธ๋ฆฌ ์ฌ์ ์ ์ ์ํด ๋์๋ค.
2. c์ substring๋ก ๋ฌธ์์ด์ i๊น์ง ์๋ฅธ ํ
- ์ฌ์ ์ ๋ฑ๋ก๋ ๊ฒฝ์ฐ, ํ์ฌ ์ ๋ ฅ์ผ๋ก ๋ฐ์๋ค์ด๊ณ ,
- ๋ฑ๋ก๋์ง ์์ ๊ฒฝ์ฐ, ์ฌ์ ์ ๋ฑ๋ก ํ, ์ด์ ์ w์ ๋์ ๋์๋ ํ์ฌ ์ ๋ ฅ์ ์์ธ ๋ฒํธ๋ฅผ idxnum์ ํธ์ํ๋ค.
3. ์ถ๋ ฅ์ ์ ์ฅํ ํ์ฌ ์ ๋ ฅ์ msg์์ ์ ๊ฑฐํ์ฌ ์ ๋ฐ์ดํธ ์ํจ๋ค.
substring๊ณผ substr์ ์ฐจ์ด๋ฅผ ํ์คํ ์์๊ฐ ๋ฌธ์ .