🔊
파이썬 알고리즘 인터뷰
책을 참고했습니다.
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()