Skip to content

Commit 516ce2c

Browse files
committed
Solve: group-anagrams
1 parent bbf7576 commit 516ce2c

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

group-anagrams/Jay-Mo-99.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
 #해석
2+
#tempDict = defaultdict(list) 로 자동으로 빈 리스트를 생성하는 딕셔너리
3+
#for loop 로 strs의 각 element를 순회
4+
#key=tuple(sorted(s)) 각 element인 s를 정렬하여 tuple로 변환하여 key로 저장한다 -> key는 변경 불가능 해야하므로 리스트 대신 tuple이 적합
5+
#tempDict[key].append(s) 로 key를 기준으로 element를 value값으로 tempDict에 저장한다.
6+
#tempDict의 value값만 return하여 같은 key를 가지는 value가 list로 묶인 이중 list를 return한다.
7+
8+
#Big O
9+
#- N: strs 리스트의 element 갯수
10+
#- K: 각 element의 길이
11+
12+
#Time Complexity: O(N∗K∗Log(K)) = O(N) * O(K*Log(K))
13+
#- sorted(s) : sort,sorted알고리즘은 Timsort 알고리즘이므로 정렬 대상 길이(K)에 영향받음 -> O(K∗Log(K))
14+
#- for loop: strs의 element갯수만큼 순회 -> O(N)
15+
16+
17+
18+
#Space Complexity: O(N∗K) = O(N) * O(N)
19+
#- tempDict key : 각 키는 최대 K 크기의 tuple로 저장 -> O(K)
20+
#- tempDict value: strs에 각 고유한 element만 있다면 tempDict의 value의 최댓값은 N개 -> O(N)
21+
22+
23+
class Solution(object):
24+
def groupAnagrams(self, strs):
25+
"""
26+
:type strs: List[str]
27+
:rtype: List[List[str]]
28+
"""
29+
tempDict = defaultdict(list)
30+
31+
for s in strs:
32+
key = tuple(sorted(s))
33+
tempDict[key].append(s)
34+
35+
return list(tempDict.values())
36+
37+

0 commit comments

Comments
 (0)