
🔊
파이썬 알고리즘 인터뷰책을 참고했습니다.
Given an array of strings strs, group the anagrams together. You can return the answer in any order.
애너그램 단어나 구를 하나의 그룹으로 묶어 반환하세요.
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
처음에 하나하나 모든 문자열의 문자에 대해 갯수를 구해 애너그램 그룹을 구했지만 이는 Time out이 발생했다.
그 보다는 딕셔너리를 이용해서 각 단어의 구성을 키로 하여 문자를 추가하는 방법이 훨씬 빠르다.
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
sorted_list = []
anagrams = collections.defaultdict(list)
for word in strs:
anagrams[''.join(sorted(word))].append(word)
return anagrams.values()