[Leetcode] 49. Group Anagrams

bradley·2022년 7월 26일
1

Algorithm

목록 보기
11/12

Problem

애너그램
일종의 언어유희, 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것.
우리 말 예로, '문전박대'를 '대박전문'으로 바꿔 부르는 단어 등을 들 수 있다.

Solution

1) 정렬하여 dictionary에 추가

애너그램을 판단하는 가장 간단한 방법은 정렬하여 비교하는 것
애너그램 관계인 단어들을 정렬하면, 서로 같은 값을 갖게 되기 때문

정렬한 값을 key로 하여 dictionary에 추가한다. 만약 존재하지 않는 키를 삽입하려할 경우 KeyError가 발생하므로, 항상 default를 생성해주는 defaultdict()로 선언하며, 매번 키 존재 여부를 체크하지 않고 비교 구문을 생략해 간결하게 구성한다.

class Solution:
    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())
profile
데이터 엔지니어링에 관심이 많은 홀로 삽질하는 느림보

0개의 댓글