Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - [3์ฐจ] ์์ถ ๋ณธ๋ฌธ
๐ ๋ฌธ์
์ ์ ์ฌ์ ์ดํผ์น๋ ์นด์นด์คํก์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์์ถํ์ฌ ์ ์ก ํจ์จ์ ๋์ด๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ๋ฉ์์ง๋ฅผ ์์ถํ๋๋ผ๋ ์ ๋ฌ๋๋ ์ ๋ณด๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ฏ๋ก, ์์ถ ์ ์ ์ ๋ณด๋ฅผ ์๋ฒฝํ๊ฒ ๋ณต์ ๊ฐ๋ฅํ ๋ฌด์์ค ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
์ดํผ์น๋ ์ฌ๋ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ ์ค์์ ์ฑ๋ฅ์ด ์ข๊ณ ๊ตฌํ์ด ๊ฐ๋จํ LZW(Lempel–Ziv–Welch) ์์ถ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค. LZW ์์ถ์ 1983๋ ๋ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท์ธ GIF ๋ฑ ๋ค์ํ ์์ฉ์์ ์ฌ์ฉ๋์๋ค.
LZW ์์ถ์ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
1. ๊ธธ์ด๊ฐ 1์ธ ๋ชจ๋ ๋จ์ด๋ฅผ ํฌํจํ๋๋ก ์ฌ์ ์ ์ด๊ธฐํํ๋ค.
2. ์ฌ์ ์์ ํ์ฌ ์ ๋ ฅ๊ณผ ์ผ์นํ๋ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด w๋ฅผ ์ฐพ๋๋ค.
3. w์ ํด๋นํ๋ ์ฌ์ ์ ์์ธ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ ๋ ฅ์์ w๋ฅผ ์ ๊ฑฐํ๋ค.
4. ์ ๋ ฅ์์ ์ฒ๋ฆฌ๋์ง ์์ ๋ค์ ๊ธ์๊ฐ ๋จ์์๋ค๋ฉด(c), w+c์ ํด๋นํ๋ ๋จ์ด๋ฅผ ์ฌ์ ์ ๋ฑ๋กํ๋ค.
5. ๋จ๊ณ 2๋ก ๋์๊ฐ๋ค.
์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ฌธ ๋๋ฌธ์๋ง ์ฒ๋ฆฌํ๋ค๊ณ ํ ๋, ์ฌ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๊ธฐํ๋๋ค. ์ฌ์ ์ ์์ธ ๋ฒํธ๋ ์ ์๊ฐ์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, 1๋ถํฐ ์์ํ๋ค๊ณ ํ์.
๐ก ์์ด๋์ด
์ํ๋ฒณ์ ํ๋์ฉ ๋ฃ์ด๊ฐ๋ฉฐ ๊ณ์ ๋น๊ตํด์ค์ผ ํ๋๊น ์คํ์ ์จ์ผ๊ฒ ๋ค๊ณ ์๊ฐ..
โ๏ธ ํ์ด
function solution(msg) {
var answer = [];
const alphabet = ['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 stk = [];
for(let i=0; i<msg.length; i++) {
stk.push(msg[i]);
if(alphabet.includes(stk.join(''))) {
}
else {
alphabet.push(stk.join(''));
stk.pop();
// ์ ์ ์กด์ฌํ๋ ์ํ๋ฒณ ์ง๋๊ฐ์ผ๋๊น ํ๋ฒ๋ง popํด์ ์ ๋จ๊ณ ์ํ๋ฒณ answer์ push
answer.push(alphabet.indexOf(stk.join('')) + 1);
while(stk.length !== 0) {
stk.pop();
}
i--;
}
}
answer.push(alphabet.indexOf(stk.join('')) + 1);
return answer;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (0) | 2023.11.20 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - [3์ฐจ] n์ง์ ๊ฒ์ (0) | 2023.10.26 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์ฐพ๊ธฐ (0) | 2023.09.20 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ ธ์ด์ ํ (0) | 2023.09.13 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ์ ์ผ๊ฐํ (0) | 2023.09.12 |