๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 5. 25. 03:57

 

 

 

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์„ ํ•ด์ค˜์„œ ๊ฐ’์„ ๋ณด์กด์‹œํ‚ค๋ ค๊ณ  ์ ์šฉ์‹œ์ผฐ๋‹ค.)

 

์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณต๋ฌธ์ด ์™„๋ฃŒ๋˜๊ณ  ๋‚˜์„œ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๋ฉด ์ œ๋Œ€๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•