1. 문제
https://leetcode.com/problems/group-anagrams/
2. 접근 방법
딕셔너리를 사용해서 애너그램 단위로 묶어줍니당
3. 코드
Python3
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
anagrams = dict()
for s in strs:
sort_s = "".join(sorted(s))
if sort_s in anagrams:
anagrams[sort_s].append(s)
else:
anagrams[sort_s] = [s]
return anagrams.values()
4. 마치며
중간에 해당 key가 존재하는지 확인하는 과정을 거치지 않으려면
collections.defaultdict()를 사용하면 됩니다.
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
anagrams = collections.defaultdict(list)
for s in strs:
sort_s = "".join(sorted(s))
anagrams[sort_s].append(s)
return anagrams.values()
위가 collections.defaultdict()를 사용한 것이구, 아래가 원래 코드인데용
속도 측면에서는 차이가 없네여
https://docs.python.org/ko/3/library/collections.html#collections.defaultdict
'Algorithm > Python' 카테고리의 다른 글
[LeetCode] 1. Two Sum (0) | 2021.06.04 |
---|---|
[LeetCode] 5. Longest Palindromic Substring (1) | 2021.06.03 |
[LeetCode] 937. Reorder Log Files (2) | 2021.06.02 |
[LeetCode] 344. Reverse String (0) | 2021.06.01 |
[LeetCode] 125. Valid Palindrome (0) | 2021.06.01 |