엔지니어 블로그

[Leetcode] 49. Group Anagrams 본문

알고리즘

[Leetcode] 49. Group Anagrams

안기용 2025. 2. 27. 18:35


풀이

배열 내의 단어들이 Anagrams인 것들 끼리 묶어서 2차원 배열을 리턴하면 되는 문제다.

for문을 이용해서 각각의 요소를 정렬한 후 dict 내에 sorted_str : [str1,str2] 와 같은 형태로 저장하고 value 값들을 list에 담아 리턴하는 형식으로 문제를 풀었다.

 

코드

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
         dict = {}
         ans = []
         for str in strs:
             sort_str = "".join(sorted(str))
             if sort_str in dict.keys():
                 dict[sort_str].append(str)
             else:
                 dict[sort_str] = [str]
        
         for arr in dict.values():
             ans.append(arr)
         return ans

처음 작성한 코드는 이런데 수정할 부분이 보여서 추후에 수정을 했다.

1.value가 list로 초기화 된 dict 생성

2.if문 제거

from collections import defaultdict

dict = defaultdict(list)

for str in strs:
    sort_str = "".join(sorted(str))
    dict[sort_str].append(str)
return list(dict.values())

둘 다 정답과 풀이 과정을 동일하지만 훨씬 간결한 코드가 되었다.

'알고리즘' 카테고리의 다른 글

[Leetcode] 20. Valid Parentheses  (0) 2025.02.20
[Leetcode] 392.Is Subsequence  (0) 2025.02.12
[LeetCode] 1. Two Sum  (0) 2025.02.01
[Leetcode]2657. Find the Prefix Common Array of Two Arrays  (0) 2025.01.14
[Leetcode] 916. Word Subsets  (0) 2025.01.10