[TIL]LeetCode#49

minhyuk_ko·2022년 1월 23일
0

TIL

목록 보기
2/7

49. Group Anagrams

문자열 배열을 받아 애너그램 단위로 그룹핑하라.

입력

strs = ["eat","tea","tan","ate","nat","bat"]

출력

[["bat"],["nat","tan"],["ate","eat","tea"]]

풀이

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

로직

배열에 존재하는 모든 문자열을 정렬하여 (ex. fdsca -> acdfs) 키값으로 저장하고 정렬되지 않은 문자열은 Value 리스트에 저장한다. 새로운 값이 같은 키값을 갖고있으면 기존 리스트에 추가한다. 만들어진 사전형 객체에서 값만 반환한다.

느낀점

819번과 마찬가지로 collections.defaultdict에 대한 공부를 할 수 있었고 보다 편하게 풀 수 있었다. sort와 sorted의 차이점을 알 수 있는 계기가 되었다. 뿐만 아니라 파이썬이 채택하고 있는 정렬방식(TimSort)의 개념을 알게 되었다.

profile
BE Developer

0개의 댓글