[leetcode 49] Group Anagrams

심지훈·2021년 5월 4일
0

leetcode

목록 보기
2/21

Group Anagrams

나의 논리

우선 나는 제출을 못했다. 1시간 정도 순열을 이용해서 풀려고 고민을 했었는데 못풀었다.

배열에서 문자를 하나씩 꺼내와 , 그 문자가 만들 수 있는 순열을 다 만든다.

joined_word = ''.join(permutated_word)

이 문자가 입력 문자배열에 존재하면 새로운 리스트에 담고 , 입력 문자 배열에서는 삭제한다.

아무래도 반복문속에서 배열 원소를 삭제하고 다음 반복문에 사용하니까
인덱스 문제인지 맨 마지막 원소는 출력이 안되는 현상이 있었다.
결국 해결을 하지 못하고 1시간 정도가 지나서 답을 보게 되었다.

정답 논리

정답은 너무 간단했다..

애너그램은 한 단어에 속해 있는 문자들의 조합인데
이 단어를 정렬하면 반드시 1개의 단어로 수렴한다.
딕셔너리를 이용해 어떤 단어로 수렴하는 단어들을 배열에 저장한다.

def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        
        import collections
        
        anagram = collections.defaultdict(list)
        
        for word in strs:
            anagram[''.join(sorted(word))].append(word)
            
        return list(anagram.values())
profile
유연한 개발자

0개의 댓글