[LeetCode] 49 Group Anagrams

kimwoody·2021년 10월 16일
0

문제

문자열 배열을 받아 애너그램 단위로 그룹핑하라

예제

  • 입력
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"]))

이번 문제는 파이썬의 내장 모듈인 collectionsdefaultdict 클래스를 사용했다.
collections 모듈과 defaultdict는 사용해본적이 적어서 언제 사용해야 하는지, 어떻게 사용해야하는지 잘 몰랐는데 이번 기회에 공부하고 사용해볼수 있어서 좋았다.
책에 나오는 collections 모듈에 대한 문제 말고 다른 문제나 예제들도 더 공부해 봐야겠다.

0개의 댓글