Algorithm/Python

[LeetCode] 49. Group Anagrams

🥭맹2 2021. 6. 3. 08:12

1. 문제

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

 

Group Anagrams - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

2. 접근 방법

딕셔너리를 사용해서 애너그램 단위로 묶어줍니당

3. 코드

Python3

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagrams = dict()
        
        for s in strs:
            sort_s = "".join(sorted(s))
            if sort_s in anagrams:
                anagrams[sort_s].append(s)
            else:
                anagrams[sort_s] = [s]
        
        return anagrams.values()
            

4. 마치며

중간에 해당 key가 존재하는지 확인하는 과정을 거치지 않으려면

collections.defaultdict()를 사용하면 됩니다.

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagrams = collections.defaultdict(list)
        
        for s in strs:
            sort_s = "".join(sorted(s))
            anagrams[sort_s].append(s)
        
        return anagrams.values()
            

49. Group Anagrams

위가 collections.defaultdict()를 사용한 것이구, 아래가 원래 코드인데용

속도 측면에서는 차이가 없네여

 

https://docs.python.org/ko/3/library/collections.html#collections.defaultdict

'Algorithm > Python' 카테고리의 다른 글

[LeetCode] 1. Two Sum  (0) 2021.06.04
[LeetCode] 5. Longest Palindromic Substring  (1) 2021.06.03
[LeetCode] 937. Reorder Log Files  (2) 2021.06.02
[LeetCode] 344. Reverse String  (0) 2021.06.01
[LeetCode] 125. Valid Palindrome  (0) 2021.06.01