Group Anagrams

박수빈·2022년 3월 3일
0

leetcode

목록 보기
35/51

문제

  • 단어 list 가 주어지면, anagram끼리 묶기.

풀이

  • 빈 리스트, 한개인 리스트 고려하기
  • dict의 key를 dict로 줄 수 있나....?
  • key 자체를 {'a':2, 'b:1'} 이런식으로 하면 편할 것 같은데..
from collections import defaultdict
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagramGroup = defaultdict(list)
        for word in strs:
            countLetter = defaultdict(int)
            for letter in word:
                countLetter[letter] += 1
            
            # a1e1t1 처럼 스트링으로 만들어서
            newKey = ""
            for key in sorted(countLetter):
                newKey += str(key)
                newKey += str(countLetter[key])
            anagramGroup[newKey].append(word)
            
        ans = []
        for val in anagramGroup.values():
            ans.append(val)
        return ans

결과

다른 풀이

discussion을 보니까 다른 풀이도 존재했는데, 시간 차이는 별로 안나는듯! 이게 근데 더 보기좋다

from collections import defaultdict
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagramGroup = defaultdict(list)
        for word in strs:
            sortedWord = "".join(sorted(word))
            anagramGroup[sortedWord].append(word)
            
        ans = []
        for val in anagramGroup.values():
            ans.append(val)
        return ans

profile
개발자가 되고 싶은 학부생의 꼼지락 기록

0개의 댓글