@@ -7,25 +7,25 @@ def count_by_range(a, left_value, right_value):
77 return right_index - left_index
88
99# 모든 단어들을 길이마다 나누어서 저장하기 위한 리스트
10- data = [[] for _ in range (10001 )]
10+ array = [[] for _ in range (10001 )]
1111# 모든 단어들을 길이마다 나누어서 뒤집어 저장하기 위한 리스트
12- reversed_data = [[] for _ in range (10001 )]
12+ reversed_array = [[] for _ in range (10001 )]
1313
1414def solution (words , queries ):
1515 answer = []
1616 for word in words : # 모든 단어를 접미사 와일드카드 배열, 접두사 와일드카드 배열에 각각 삽입
17- data [len (word )].append (word )
18- reversed_data [len (word )].append (word [::- 1 ])
17+ array [len (word )].append (word ) # 단어를 삽입
18+ reversed_array [len (word )].append (word [::- 1 ]) # 단어를 뒤집어서 삽입
1919
20- for i in range (10001 ): # 이진 탐색을 수행하기 위해 각 단어들 정렬 수행
21- data [i ].sort ()
22- reversed_data [i ].sort ()
20+ for i in range (10001 ): # 이진 탐색을 수행하기 위해 각 단어 리스트 정렬 수행
21+ array [i ].sort ()
22+ reversed_array [i ].sort ()
2323
2424 for q in queries : # 쿼리를 하나씩 확인하며 처리
2525 if q [0 ] != '?' : # 접미사에 와일드 카드가 붙은 경우
26- res = count_by_range (data [len (q )], q .replace ('?' , 'a' ), q .replace ('?' , 'z' ))
26+ res = count_by_range (array [len (q )], q .replace ('?' , 'a' ), q .replace ('?' , 'z' ))
2727 else : # 접두사에 와일드 카드가 붙은 경우
28- res = count_by_range (reversed_data [len (q )], q [::- 1 ].replace ('?' , 'a' ), q [::- 1 ].replace ('?' , 'z' ))
28+ res = count_by_range (reversed_array [len (q )], q [::- 1 ].replace ('?' , 'a' ), q [::- 1 ].replace ('?' , 'z' ))
2929 # 검색된 단어의 개수를 저장
3030 answer .append (res )
3131 return answer
0 commit comments