less than 1 minute read

49. Group Anagrams

문제 링크

https://leetcode.com/problems/group-anagrams/description/

문제 설명

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

제한사항

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] consists of lowercase English letters.

입출력 예 #1

  1. Input: strs = [“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]
  2. Output: [[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]

입출력 예 #2

  1. Input: strs = [””]
  2. Output: [[””]]

입출력 예 #3

  1. Input: strs = [“a”]
  2. Output: [[“a”]]

문제풀이

sorted 함수를 이용하여 각 단어의 알파벳을 정렬하여 anagram을 찾아 저장한다.

## 나의 풀이
class Solution:
    def groupAnagrams(self, strs : List[str]) -> List[List[str]] :
        strs.sort(key = lambda x : sorted(x))
        anagram = [[strs[0]]]

        for string in strs[1:] :
            if sorted(anagram[-1][-1]) == sorted(string) : 
                anagram[-1].append(string)
            else : 
                anagram.append([string])
            
        return anagram
## 교재 풀이
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 anagrams.values()

Comments