[Level 2] ์์ถ
Algorithm
- ์์ถ -
๋ฌธ์
์ ์ ์ฌ์ ์ดํผ์น๋ ์นด์นด์คํก์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์์ถํ์ฌ ์ ์ก ํจ์จ์ ๋์ด๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค.
๋ฉ์์ง๋ฅผ ์์ถํ๋๋ผ๋ ์ ๋ฌ๋๋ ์ ๋ณด๊ฐ ๋ฐ๋์ด์๋ ์๋๋ฏ๋ก, ์์ถ ์ ์ ์ ๋ณด๋ฅผ ์๋ฒฝํ๊ฒ ๋ณต์ ๊ฐ๋ฅํ ๋ฌด์์ค ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
์ดํผ์น๋ ์ฌ๋ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ ์ค์์ ์ฑ๋ฅ์ด ์ข๊ณ ๊ตฌํ์ด ๊ฐ๋จํ LZM(Lempel-Ziv-Welch) ์์ถ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
LZM ์์ถ์ 1983๋ ๋ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท์ธ GIF ๋ฑ ๋ค์ํ ์์ฉ์์ ์ฌ์ฉ๋์๋ค.
LZW ์์ถ์ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
1. ๊ธธ์ด๊ฐ 1์ธ ๋ชจ๋ ๋จ์ด๋ฅผ ํฌํจํ๋๋ก ์ฌ์ ์ ์ด๊ธฐํํ๋ค.
2. ์ฌ์ ์์ ํ์ฌ ์ ๋ ฅ๊ณผ ์ผ์นํ๋ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด w๋ฅผ ์ฐพ๋๋ค.
3. w์ ํด๋นํ๋ ์ฌ์ ์ ์์ธ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ ๋ ฅ์์ w๋ฅผ ์ ๊ฑฐํ๋ค.
4. ์ ๋ ฅ์์ ์ฒ๋ฆฌ๋์ง ์์ ๋ค์ ๊ธ์๊ฐ ๋จ์์๋ค๋ฉด(c), w+c์ ํด๋นํ๋ ๋จ์ด๋ฅผ ์ฌ์ ์ ๋ฑ๋กํ๋ค.
5. ๋จ๊ณ 2๋ก ๋์๊ฐ๋ค
์ฃผ์ด์ง ๋ฌธ์์ด์ ์์ถํ ํ์ ์ฌ์ ์์ธ ๋ฒํธ๋ฅผ ๋ฐฐ์ด๋ก ์ถ๋ ฅํ๋ผ.
์ ์ถ๋ ฅ ์์
msg | answer |
KAKAO | [11, 1, 27, 25] |
TOBEORNOTTOBEORTOBEORNOT | [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] |
๋ฌธ์ ํ๊ธฐ
์ด๋ฒ ๋ฌธ์ ๋ ์ฌ์ค ๋ฌธ์ ๋ฅผ ์ฝ๋๋ฐ ์ดํดํ๋๋ฐ ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ ค์ ๋ฌธ์ ์ ๋์์๋ ์ ์ถ๋ ฅ ์์๋ฅผ ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด์๋ค.
(๋ฌธ์ ๋ค ํ๊ณ ๋ค์ ์ฝ์ด๋ดค์ง๋ง ๋ฌธ์ ์์ฒด๋ฅผ ์ดํดํ๋๋ด ๋์๊ฒ ๋ฌด๋ฆฌ์ธ๋ฏ... ์ ์ถ๋ ฅ ์์ ์งฑ์งฑ)
๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ์๋์ง์๋ํด ๊ฐ๋จํ ์ค๋ช ํด๋ณด์๋ฉด ์ผ๋จ msg๋ก ๋ถํฐ ๋ฐ์์ค๋ ๊ฐ์ด ๋๋ฌธ์์ธ์ง ์๋ฌธ์์ธ์ง ์๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์๋ง์ ์๋ฌธ์๋ก ๋ฐ๊พธ๊ณ ๋ฌธ์ ์์ ์ํ๋ฒณ์ ๋ถ๋ฆฌํด์ ๋ฒํธํ์ฌ์ (?)์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋๊ฒ ๊ฐ์์ alpha๋ผ๋ ๋ฐฐ์ด์์ ํ๋์ฉ ์ํ๋ฒณ์ ๋ฃ์ด์ ์ฌ์ ์ ๋ง๋ค์ด ๋ณด์๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ msg์์ ์ฒ์๋ถํฐ ํ๋์ฉ alpha์์ ๊ฐ์ ์ฐพ์๋ค์ ๋ค์ ๋ฌธ์์ ์ฎ์ด์ ์ฌ์ ์ ์๋ก ์ถ๊ฐํด์ฃผ๊ฒ ๋๋๋ฐ ์ด๋ ๋ฐ๋ณต๋ฌธ์ ๊ณ์ ๋๋ฆฌ๊ฒ ๋ ๊ฒฝ์ฐ ์ฌ๋ฌ๊ฐ๋ก ๋ฌถ์ฌ ์ฌ์ ์ ๋ฑ๋ก๋์ด ์๋ ๋ฌธ์์ด์ด msg์์ ํฌํจ๋์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์์ชฝ ๋ฐ๋ณต๋ฌธ์์ msg๋ฅผ ๊ตฌ๊ฐ์ ๊ณ์ ๋๋์ด alpha์์ ํฌํจ๋์ด ์์๋ ๊น์ง ๊ณ์ ๋ฐ๋ณต๋ฌธ์ด ๋์๊ฐ๋๋ก ์ค์ ์ ํด์ฃผ์๋ค.
๋ง์ฝ ํฌํจ๋์ด ์์ผ๋ฉด ์ผ๋จ alpha์์ ์ธ๋ฑ์ค ๊ฐ์ ์ฐพ์์ result์์ ์ธ๋ฑ์ค๋ฅผ ๋ฃ์ด์ฃผ๊ณ ๊ธฐ์กด ๋ฌธ์์ด์ ๋ค์ ๋ฌธ์์ด์ ํ๋ ์ถ๊ฐํด์ alpha์์ ์๋ก ๋ฑ๋ก์ ์์ผ์ฃผ๋ฉฐ, ๋ง์ฝ sliceํ ๊ตฌ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ๋ฐ๊นฅ for๋ฌธ์ด ์ด๋ฏธ result์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฃ์๋๋ฐ ๋ ๋๋ฆด ์ด์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ i์ ๊ฐ์ j-1ํ ๊ฐ์ผ๋ก ์ฌ์ค์ ์ ํด์ค ๋ค break๋ฅผ ํตํด ์์ชฝ ๋ฐ๋ณต๋ฌธ์ ๋๊ฐ์ค๋ค.
(i์ ๊ฐ์ j๊ฐ ์๋ j-1๋ก ์ค์ ํ๊ฑด ๋ค์ for๋ฌธ์ ์ง์ ํ ๋ i์ ๊ฐ์ +1 ์ํค๊ธฐ ๋๋ฌธ์ -1์ ํด์ค์ ๊ฐ์ ๋ณด์กด์ํค๋ ค๊ณ ์ ์ฉ์์ผฐ๋ค.)
์ด๋ ๊ฒ ๋ฐ๋ณต๋ฌธ์ด ์๋ฃ๋๊ณ ๋์ ๊ฐ์ ๋ฆฌํดํ๊ฒ ๋๋ฉด ์ ๋๋ก ํด๊ฒฐ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.