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

정렬하여 딕셔너리에 추가

애너그램 가장 간단하게 하는 방법은 정렬한 뒤에 비교하는 것이다.

개인적으로 기억하는 것은 C언어할떄, 아스키코드 숫자가 순차적으로 있으니깐. 그냥 순서대로 정렬하긴 했다. 파이썬에서도 비슷하게 먹힐거 라고 생각한다.

import collections

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

def group_anagrams(input: list[str]) -> list[list]:
    angrams = collections.defaultdict(list)

    for word in input:
        #정렬하여 딕셔너리에 추가
        angrams[''.join(sorted(word))].append(word)

    return list(angrams.values())

if __name__ == '__main__':
    print(group_anagrams(input_data))

이런 방법을 추천해주더라. 조금 궁금한게 collections.defaultdict의 원리이다.

전 코테 연습문제에도 배웠지만 아직 제대로 익힌거 같지가 않다.