본문 바로가기

프로그래머/Python

[Python] Leet Code 49 : Group Anagrams

본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:

        anagram = collections.defaultdict(list)

        for word in strs:
            anagram[''.join(sorted(word))].append(word)

        return anagram.values()

이 문제에서 배워야할 포인트

for word in strs:
            anagram[''.join(sorted(word))].append(word)
  • 정렬하여 딕셔너리에 추가

    • key: sorted(word), value: word

    • 만약 존재하지 않는 키를 삽입하려 할 경우 KeyError가 발생하므로 defaultdict()로 구현한다.

    • sort() 메소드는 리스트 자체를 정렬하며, 입력을 출력으로 덮어쓰기 때문에 별도의 추가 공간이 필요하지 않으며, 리턴 값이 없다.

    • sorted()는 또한 key= 옵션을 지정할 수 있다.

      c = ['ccc', 'aaaa', 'd', 'bb']
      sorted(c, key=len)
      
      a = ['cde', 'cfc', 'abc']
      sorted(a, key=lambda s: (s[0],s[-1]))