[์ค์ํํธ ์๊ณ ๋ฆฌ์ฆ] ํ๋ก๊ทธ๋๋จธ์ค: ์์ถ
๋ฌธ์
์ ์
์ฌ์ ์ดํผ์น๋ ์นด์นด์คํก์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์์ถํ์ฌ ์ ์ก ํจ์จ์ ๋์ด๋ ์
๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ๋ฉ์์ง๋ฅผ ์์ถํ๋๋ผ๋ ์ ๋ฌ๋๋ ์ ๋ณด๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ฏ๋ก, ์์ถ ์ ์ ์ ๋ณด๋ฅผ ์๋ฒฝํ๊ฒ ๋ณต์ ๊ฐ๋ฅํ ๋ฌด์์ค ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
์ดํผ์น๋ ์ฌ๋ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ ์ค์์ ์ฑ๋ฅ์ด ์ข๊ณ ๊ตฌํ์ด ๊ฐ๋จํ LZW(LempelโZivโWelch) ์์ถ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค. LZW ์์ถ์ 1983๋
๋ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท์ธ GIF ๋ฑ ๋ค์ํ ์์ฉ์์ ์ฌ์ฉ๋์๋ค.
LZW ์์ถ์ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ๊ธธ์ด๊ฐ 1์ธ ๋ชจ๋ ๋จ์ด๋ฅผ ํฌํจํ๋๋ก ์ฌ์ ์ ์ด๊ธฐํํ๋ค.
- ์ฌ์ ์์ ํ์ฌ ์ ๋ ฅ๊ณผ ์ผ์นํ๋ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด w๋ฅผ ์ฐพ๋๋ค.
- w์ ํด๋นํ๋ ์ฌ์ ์ ์์ธ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ ๋ ฅ์์ w๋ฅผ ์ ๊ฑฐํ๋ค.
- ์ ๋ ฅ์์ ์ฒ๋ฆฌ๋์ง ์์ ๋ค์ ๊ธ์๊ฐ ๋จ์์๋ค๋ฉด(c), w+c์ ํด๋นํ๋ ๋จ์ด๋ฅผ ์ฌ์ ์ ๋ฑ๋กํ๋ค.
- ๋จ๊ณ 2๋ก ๋์๊ฐ๋ค.
ํ์ด
๋ฌธ์ ์์ ์ฃผ์ด์ง๋๋ก ๊ตฌํ๋ง ํ๋ฉด ๋๋ ๋ฌธ์ ์์ต๋๋ค. ๊ฐ์ฅ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด "์ฌ์ ์์ ํ์ฌ ์ ๋ ฅ๊ณผ ์ผ์นํ๋ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด w๋ฅผ ์ฐพ๋๋ค"๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ ์ด ๋ถ๋ถ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ ๋ ฅ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ ๋ค์ ๋ค์ ๋ฌธ์๋ฅผ ํ์ธํด์ ํ์ฌ ์ ๋ ฅ๊ณผ ๋ค์๋ฌธ์๋ฅผ ํฉ์ณค์ ๋ ์ฌ์ ์ ์กด์ฌํ๋ ๋ฌธ์์ด์ด ๋ง๋ค์ด์ง๋ค๋ฉด ์ง๊ธ๋ณด๋ค ๋ ๊ธด ๋ฌธ์์ด์ด ์๋ค๊ณ ํ๋จํ๊ณ ์๋ฌด ๋์๋ ์ํํ์ง ์๊ณ ๋ค์ ๋ฐ๋ณต์ ์งํํ๋๋ก ํ์ต๋๋ค. ๋ค์ ๋ฌธ์๊ฐ ์กด์ฌํ์ง ์์ ๋๋ ํ์ฌ ์ ๋ ฅ์ ์ฌ์ ์ ์ฐพ์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ต์ ์ถ๊ฐํ๊ณ ๋ฐ๋ณต์ ์ข ๋ฃํฉ๋๋ค.
์ฝ๋
func solution(_ msg:String) -> [Int] { | |
var dict = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".map({ String($0) }) | |
var message = msg.map({ String($0) }) | |
var output: [Int] = [] | |
var input: String = "" | |
while !message.isEmpty { | |
input += message.removeFirst() | |
guard let next = message.first else { | |
output.append(dict.firstIndex(of: input)! + 1) | |
break | |
} | |
if let index = dict.firstIndex(of: input), !dict.contains(input + next) { | |
output.append(index + 1) | |
dict.append(input + next) | |
input = "" | |
} | |
} | |
return output | |
} |
'๐๐ปโโ๏ธ ํผ-์์ค > ๐ฃ ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.