[leetcode] Group Anagrams

코딩코딩·2022년 5월 25일
0

애너그램별로 그룹 생성
https://leetcode.com/problems/group-anagrams/

22-05-25

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        answer = dict()
        for str_ in strs:
            sort_str = ''.join(sorted(str_))
            if sort_str in answer.keys():
                answer[sort_str].append(str_)
            else:
                answer[sort_str] = [str_]
                  
        return answer.values()
  • Runtime: 2817ms
  • Memory: 17.2MB

Next what to do
1. collections.defaultdict(list)를 이용하여 KeyError를 해결하자. <- key 있는지 확인하는 것 자체가 시간이 오래 걸림

24-06-29

import collections 
class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """

        anangram = collections.defaultdict(list)
        for word in strs:
            key = ''.join(sorted(word))
            anangram[key].append(word)

        return anangram.values()

이전코드에서 collections.defaultdict(list) 사용을 추가함.
런타임은 63ms로 1/4 가량 줄어듦.
현업에서도 collections.defaultdict()는 많이 사용하면 좋을 듯!

profile
심심해서 하는 코딩..

0개의 댓글