문자열 배열을 받아 애너그램 단위로 그룹핑하라
strs = ["eat","tea","tan","ate","nat","bat"]
[["bat"],["nat","tan"],["ate","eat","tea"]]
import collections
from typing import List
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
# 애너그램 문자를 키로 사용하고 값은 리스트로 하는 딕셔너리를 만든다
anagrams = collections.defaultdict(list)
# strs에 있는 단어들을 순회한다
for word in strs:
sorted_word = ''.join(sorted(word))
# 단어를 정렬한 값을 anagrams의 키로 사용하고
# 키에 해당하는 리스트에 정렬하지 않은 원래 단어를 append 한다
anagrams[sorted_word].append(word)
return list(anagrams.values())
solution = Solution()
print(solution.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))
이번 문제는 파이썬의 내장 모듈인 collections
의 defaultdict
클래스를 사용했다.
collections
모듈과 defaultdict
는 사용해본적이 적어서 언제 사용해야 하는지, 어떻게 사용해야하는지 잘 몰랐는데 이번 기회에 공부하고 사용해볼수 있어서 좋았다.
책에 나오는 collections
모듈에 대한 문제 말고 다른 문제나 예제들도 더 공부해 봐야겠다.