๋ฌธ์ ์ค๋ช
LZW ์์ถ ๋จ๊ณ๋ ์์ ๊ฐ๋ค.
์ฌ์ค.. ์ด ๋ถ๋ถ๋ง ๋ณด๊ณค ๋ฌธ์ ์ดํด๋ฅผ ๋ชปํ๋ค.
์ ์ถ๋ ฅ ์์ ๋ฅผ ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ๊ฒจ์ฐ ์ดํดํ๋ค...
๊ฐ๋จํ ๋งํ๋ฉด ํ์ฌ ์ฌ์ ์ ์๋ ๋จ์ด์ ์ต๋ ๊ธธ์ด๋ฅผ ์ฐพ๊ณ ๊ทธ ์์ธ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ์ฐพ์ ๋จ์ด+๋ค์ ๋จ์ด๋ฅผ ์ฌ์ ์ ๋ฑ๋กํ๋ค.
์๋ฅผ ๋ค์ด ABAB๊ฐ ์์ ๋
1. A ์ ์์ธ๋ฒํธ 1์ ์ถ๋ ฅํ๋ค. ๊ทธ ๋ค์ ๋จ์ด์ธ B๋ฅผ ํฌํจํ AB๋ฅผ 27๋ก ์ฌ์ ์ ๋ฃ๋๋ค.
2. B์ ์์ธ๋ฒํธ 2์ ์ถ๋ ฅํ๋ค. ๊ทธ ๋ค์ ๋จ์ด์ธ A๋ฅผ ํฌํจํ BA๋ฅผ 28๋ก ์ฌ์ ์ ๋ฃ๋๋ค.
3. AB์ ์์ธ๋ฒํธ 27์ ์ถ๋ ฅํ๋ค. ๋ค์ ๋จ์ด๋ ์์ผ๋ ์ฌ์ ์ ๋ฃ์ ๊ฒ ์๋ค.
๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ์ ํต์ฌ์ ์ฌ์ ์ ์๋ ๋จ์ด์ ๊ธธ์ด๋ฅผ ์ต๋๋ก ์ฐพ๋ ๊ฒ
์๋ฅผ ๋ค์ด ~ABCDEF๊ฐ ์์ ๋ ์ฌ์ ์ AB๋ ์๊ณ ABC๋ ์๋ค๊ณ ๊ฐ์ ํด๋ณธ๋ค.
for๋ฌธ์ ๋๋ฉฐ msg์ ๋ฌธ์ ํ๋ํ๋์ฉ ์ฒดํฌํด๋ณธ๋ค.
1. ํ์ฌ ๋ฌธ์๋ A: ๋จผ์ A๋ฅผ ์ฒดํฌํ๋ค. ์ฌ์ ์ ์๋ค. -> A๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋ฌธ์๋ก ๋์ด๊ฐ๋ค.
2. ํ์ฌ ๋ฌธ์๋ B: ์๊น ์ ์ฅํด๋ A์ B๋ฅผ ๋ํ AB๋ฅผ ์ฒดํฌํ๋ค. ์ฌ์ ์ ์๋ค. -> AB๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋ฌธ์๋ก ๋์ด๊ฐ๋ค.
3. ํ์ฌ ๋ฌธ์๋ C: ์๊น ์ ์ฅํด๋ AB์ C๋ฅผ ๋ํ ABC๋ฅผ ์ฒดํฌํ๋ค. ์ฌ์ ์ ์๋ค. -> ABC๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋ฌธ์๋ก ๋์ด๊ฐ๋ค.
4. ํ์ฌ ๋ฌธ์๋ D: ์๊น ์ ์ฅํด๋ ABC์ D๋ฅผ ๋ํ ABCD๋ฅผ ์ฒดํฌํ๋ค. ์ฌ์ ์ ์๋ค. -> ABC์ ์์ธ๋ฒํธ๋ฅผ ๋ต์ ๋ฃ๋๋ค. ABCD๋ฅผ ์ฌ์ ์ ์ถ๊ฐํ๋ค.
์ด๋ฐ ์์ ํ์ด๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค.
์ฝ๋
func solution(_ msg:String) -> [Int] {
let msg = msg.map { String($0) }
var dictionary = [String: Int]()
var answer = [Int]()
var num = 26
// A~Z ๋์
๋๋ฆฌ์ ๋ฃ์ด์ค
for i in 1...num {
let alphabet = String(UnicodeScalar(64+i)!)
dictionary[alphabet] = i
}
var w: String = "" // ํ์ฌ ๋ฌธ์์ด
var wc: String = "" // ํ์ฌ ๋ฌธ์์ด+๋ค์ ๋ฌธ์์ด
for i in 0..<msg.count {
w += msg[i]
if i == msg.count-1 { // ๋ง์ง๋ง ๋ฌธ์์ด์ด๋ฉด ํ์ฌ ๋ฌธ์์ด ์์ธ๋ฒํธ ๋ฃ๊ณ ๋๋
answer.append(dictionary[w]!)
break
} else {
wc = w+msg[i+1] // ๋ค์๋ฌธ์์ด์ ๋ํ wc
}
if dictionary[wc] == nil { // wc๊ฐ ์ฌ์ ์ ์๋ค๋ฉด
num += 1
dictionary[wc] = num // wc๋ฅผ ์ฌ์ ์ ๋ฃ์ด์ค
answer.append(dictionary[w]!) // ๋ต์ w๋ฅผ ๋ฃ์ด์ค
w = "" // w์ wc ๋น ๊ฐ์ผ๋ก ์ด๊ธฐํ
wc = ""
}
}
return answer
}
ํ๊ธฐ
ํค๋งธ๋ ๋ถ๋ถ์ ์์ธ๋ฒํธ๋ฅผ ๋ฃ์๋ ๋์ ๋๋ฆฌ์ last์ ์์ธ๋ฒํธ +1 ํ๋ ์์ผ๋ก ๊ตฌํํ๋ คํ๋๋ฐ.. ๋์ ๋๋ฆฌ๊ฐ ๋ฃ์ ์์๋๋ก ์ ๋ ฌ๋์ง ์๋๋ค๋ ์ฌ์ค์ ์์ด๋ฒ๋ ธ๋ฐ..ใ ใ
๊ทธ๋์ num๋ผ๋ ๋ณ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ๋ฃ์ ๋๋ง๋ค num+=1 ํด์ฃผ์๋ค.
์ฒ์์ ๋ฌธ์ ์ดํดํ๋๋ฐ ์กฐ๊ธ ๊ฑธ๋ ธ์ง๋ง.. ๋ฌธ์ ๋ง ์ดํดํ๊ณ ๋๋ฉด ๋จ์ ๊ตฌํ ๋ฌธ์ ์ด๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1743] swift ์์๋ฌผ ํผํ๊ธฐ: DFS (0) | 2023.04.05 |
---|---|
[๋ฐฑ์ค 1654] swift ๋์ ์๋ฅด๊ธฐ (0) | 2023.03.29 |
[๋ฐฑ์ค 9935] swift ๋ฌธ์์ด ํญ๋ฐ (1) | 2023.03.21 |
[ํ๋ก๊ทธ๋๋จธ์ค] swift ์คํฐ์ปค ๋ชจ์ผ๊ธฐ(2) (0) | 2023.03.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] swift ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (0) | 2023.03.02 |