1+ '''
2+ LZW
3+ 1. Dic = {seq_length = 1 λ¨μ΄λ€ }
4+
5+ 2. in Dic νμ¬ μ
λ ₯ matching λ λ¨μ΄μ€ κ°μ₯ max length κ°μ§ λ¬Έμμ΄ μ°ΎκΈ° => w
6+ 3.print(Wμ index), input μμ μ κ±° pop
7+ 4 μ
λ ₯μμ μ²λ¦¬ λμ§ μμ λ€μ κΈμ c μμΌλ©΄ -> w+cλ₯Ό μ¬μ μ λ±μ¬
8+ 5.2λ‘ regress
9+ | condition
10+ 1. λλ¬Έμλ§
11+ 2,dic_index : 1 ~
12+
13+ '''
14+ dic = [0 , "A" , "B" , "C" , "D" ,"E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" ]
15+ def compression_check (left_w , dic ):
16+ # 1 . dicμ w μ μ¬λΆ
17+ # 2. W μ total_c μ°ΎκΈ° : 2point matching λ λ¨μ΄μ€ κ°μ₯ max length -
18+ # answer =[] ;
19+ count = 0
20+ i = 0 ; j = len (left_w ) # i : start ,j : end
21+ while i != j and j >= 0 : # cκ° μμ -> λ
22+ # print("1" ,left_w[i:j] ,i , j)
23+ count += 1
24+ if left_w [i :j ]in dic :
25+ print ("2" , i , j )
26+ w = left_w [i :j ]
27+ c = left_w [j ]
28+ dic .append (w + c )
29+ print (w ,c ,dic )
30+ idx = dic .index (w )
31+ # answer.append(idx)
32+ print ("w_idx" , idx )
33+ # left_w = "" + c # μ΄κΈ°ν
34+ i = j #μ
λ°μ΄νΈ
35+ return idx , j
36+ # print("#" , w , c , dic , left_w)
37+
38+ # print("-1")
39+ j = j - 1
40+ # print(j)
41+
42+
43+ def solution (msg ):
44+ answer = []
45+
46+
47+ # 1. inintialize dic
48+ # dic = [0 , "A" , "B" , "C" , "D" ,"E", "F" , "G" , "H" , "I" , "J" , "K" , "L", "M" , "N" , "O", "P", "Q", "R", "S" , "T" , "U" , "V" , "W", "X" , "Y" , "Z"] # total 26 + "0" = 1 -> 1~ 26 only valid
49+ #2.
50+ a = 0 ; c = "a"
51+ answer = []
52+ a , j_c = compression_check (msg , dic )
53+ answer .append (a )
54+
55+ while j_c > 0 :
56+ a ,j_c = compression_check (msg [j_c :] , dic )
57+ print (a )
58+
59+ # print("####", answer)
60+ return answer
0 commit comments