본문 바로가기

알고리즘

[파이썬 알고리즘 인터뷰]그룹 애너그램

728x90
 

Group Anagrams - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

나의 풀이

def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        keys=[]
        anagrams={}
        answer=[]
        
        for s in strs:
            sort_str=sorted(s)
            sort_str=''.join(sort_str)
            
            if sort_str in keys:
                anagrams[sort_str].append(s)
            else:
                keys.append(sort_str)
                anagrams[sort_str]=[s]
        
        return list(anagrams.values())

먼저 단어를 정렬하여 그룹을 정한 다음 해당 그룹에 단어를 하나씩 추가하는 방버

풀이

def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
    anagrams = collections.defaultdict(list)

    for word in strs:
        anagrams[''.join(sorted(word))].append(word)
        
    return list(anagrams.values())
  • collections.defaultdict(list)를 통해 조건문 없이 키가 없을 경우 빈리스트를 생성하게 함.
  • 정렬 후 합치고 이를 딕셔너리에 추가하는 것을 깔끔하게 한줄로 처리

 

이게 진정 파이써닉한 코드인가...

반응형