์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ํฌ๋กค๋ง
- ADsP
- ํ ์คํธ๋ถ์
- datascience
- dataframe
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- ์๋ํด๋ผ์ฐ๋
- LDA
- ๋ ๋ฆฝํ๋ณธ
- ๋น ๋ฐ์ดํฐ
- ๋์ํ๋ณธ
- ๋ฐ์ดํฐ๋ถ์
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- opencv
- Lambda
- pandas
- ๊ตฐ์งํ
- ADP
- ์ฃผ์ฑ๋ถ๋ถ์
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- numpy
- DBSCAN
- PCA
- ํ์ด์ฌ
- ์ธ๋์ํ๋ง
- Python
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- t-test
- ์ค๋ฒ์ํ๋ง
- iloc
Data Science LAB
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level 2 ([3์ฐจ] ์์ถ) ๋ณธ๋ฌธ
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level 2 ([3์ฐจ] ์์ถ)
ใ ใ ใ ใ 2022. 10. 29. 19:261. ๋ฌธ์ ์ค๋ช
์ ์ ์ฌ์ ์ดํผ์น๋ ์นด์นด์คํก์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์์ถํ์ฌ ์ ์ก ํจ์จ์ ๋์ด๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ๋ฉ์์ง๋ฅผ ์์ถํ๋๋ผ๋ ์ ๋ฌ๋๋ ์ ๋ณด๊ฐ ๋ฐ๋์ด์๋ ์ ๋๋ฏ๋ก, ์์ถ ์ ์ ์ ๋ณด๋ฅผ ์๋ฒฝํ๊ฒ ๋ณต์ ๊ฐ๋ฅํ ๋ฌด์์ค ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
์ดํผ์น๋ ์ฌ๋ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ ์ค์์ ์ฑ๋ฅ์ด ์ข๊ณ ๊ตฌํ์ด ๊ฐ๋จํ LZW(Lempel–Ziv–Welch) ์์ถ์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค. LZW ์์ถ์ 1983๋ ๋ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท์ธ GIF ๋ฑ ๋ค์ํ ์์ฉ์์ ์ฌ์ฉ๋์๋ค.
LZW ์์ถ์ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ๊ธธ์ด๊ฐ 1์ธ ๋ชจ๋ ๋จ์ด๋ฅผ ํฌํจํ๋๋ก ์ฌ์ ์ ์ด๊ธฐํํ๋ค.
- ์ฌ์ ์์ ํ์ฌ ์ ๋ ฅ๊ณผ ์ผ์นํ๋ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด w๋ฅผ ์ฐพ๋๋ค.
- w์ ํด๋นํ๋ ์ฌ์ ์ ์์ธ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ ๋ ฅ์์ w๋ฅผ ์ ๊ฑฐํ๋ค.
- ์ ๋ ฅ์์ ์ฒ๋ฆฌ๋์ง ์์ ๋ค์ ๊ธ์๊ฐ ๋จ์์๋ค๋ฉด(c), w+c์ ํด๋นํ๋ ๋จ์ด๋ฅผ ์ฌ์ ์ ๋ฑ๋กํ๋ค.
- ๋จ๊ณ 2๋ก ๋์๊ฐ๋ค.
์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ฌธ ๋๋ฌธ์๋ง ์ฒ๋ฆฌํ๋ค๊ณ ํ ๋, ์ฌ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๊ธฐํ๋๋ค. ์ฌ์ ์ ์์ธ ๋ฒํธ๋ ์ ์๊ฐ์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, 1๋ถํฐ ์์ํ๋ค๊ณ ํ์.
์ด ๊ณผ์ ์ ๊ฑฐ์ณ ๋ค์ฏ ๊ธ์์ ๋ฌธ์ฅ KAKAO๊ฐ 4๊ฐ์ ์์ธ ๋ฒํธ [11, 1, 27, 15]๋ก ์์ถ๋๋ค.
์ ๋ ฅ์ผ๋ก TOBEORNOTTOBEORTOBEORNOT๊ฐ ๋ค์ด์ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ถ์ด ์งํ๋๋ค.
2. ๋ด ํ์ด
def solution(msg):
answer = []
word_dict = {chr(x+65): x+1 for x in range(26)}
i,j = 0,0
num = 27
while True:
j+=1
if msg[i:j+1] not in word_dict.keys():
word_dict[msg[i:j+1]] = num
answer.append(word_dict[msg[i:j]])
num += 1
i = j
if j == len(msg):
answer.append(word_dict[msg[i:j]])
break
return answer
1. ASCII Code๋ฅผ ์ด์ฉํด ๋๋ฌธ์ A~Z๋ฅผ 1๋ถํฐ 26๊น์ง๋ก ๋์ ๋๋ฆฌ์ ์ ์ฅ (์ฌ์ ์ด๊ธฐํ)
2. i = 0, j = 1๋ก ์์ํ์ฌ msg ๋ฌธ์์ด์ [i:j+1]์ ๊ธ์๊ฐ word_dict์ ์กด์ฌํ์ง ์์ผ๋ฉด ์ถ๊ฐํจ (์ซ์๋ 27๋ถํฐ ์์)
answer list์๋ msg[i:j] ์ถ๊ฐ
๋์ ๋๋ฆฌ์ ์ซ์๊ฐ 1 ์ถ๊ฐ๋์์ผ๋ฏ๋ก num + 1
i = j๋ก ๋ณํ
3. j๊ฐ msg ๋ฌธ์์ด์ ๊ธธ์ด์ ๊ฐ์์ง๋ฉด answer์ ๋ง์ง๋ง ์ซ์ ์ถ๊ฐ ํ break
def solution(msg):
answer = []
tmp = {chr(e + 64): e for e in range(1, 27)}
num = 27
while msg:
tt = 1
while msg[:tt] in tmp.keys() and tt <= msg.__len__():
tt += 1
tt -= 1
if msg[:tt] in tmp.keys():
answer.append(tmp[msg[:tt]])
tmp[msg[:tt + 1]] = num
num += 1
msg = msg[tt:]
return answer