알고리즘/Problem Solving

[LeetCode] Group Anagrams

도툐리 2021. 4. 12. 23:55

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

 

 

(0) 맨 처음에 내가 작성했던 코드

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        
        # collections.Counter 이용해야할듯
        
        # [1] key로 원래 string의 Counter객체 튜플을, value로 원래 string을 가지고 있는 dict를 만들자!
        my_dict = {}
        
        for string in strs:
            my_list = [v for v in string]
            my_list.sort()
            my_counter = collections.Counter(my_list).most_common()
            my_key = tuple(my_counter)  
            # [1] - 1. 해당 key가 없는 상태라면 새로 만들기.
            if my_key not in my_dict:
                my_dict[my_key] = []
            # [1] - 2. 해당 key가 이미 있다면 그냥 그대로 append
            my_dict[my_key].append(string) 
        my_arr = []
        # [2] dict 안에서 value가 똑같은 애들끼리 묶어주자!
        for i,v in my_dict.items():
            my_arr.append(v)
        
        return my_arr

 

정말.... 똥망 효율성,,,,, ㅋㅋㅋㅋ ㅠㅠㅠ.ㅠ.ㅠ ㅠ 일단 어떻게든 통과 시키는걸 목적으로 막 더럽게 짰다....

 

 

(1) <파이썬 알고리즘 인터뷰> : 리스트 컴프리헨션, Counter 객체 사용