File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments