05. 그룹 애너그램(leetcode: 49)
분석
결국 문자열의 리스트에서 같은 애너그램을 만드는 문자 들을 찾고, 해당 문자들을 리스트의 리스트로 만드는게 문제의 핵심
인자로 들어온 strs
(리스트) 를 순회하면서
정렬된 문자열
sorted_s
를 만든다.sorted_s
를key
로 하는 해쉬의value
로str
을 넣는다.
2번에서 value
로 str 을 넣는다고 했는데, 여기서 일반적인 딕셔너리를 사용해서는 문제를 해결할 수도 없다.
왜냐하면 value
의 형태는 str
이 복수가 들어가는 리스트 여야 하는데, 일반적인 dict 로는 list를 넣는 방법이 애매하고 무엇보다도 초기값 때문에 문제가 생긴다.
defaultdict 를 사용하면 비어있는 key 에 value 를 넣으면 default 로 값을 생성한다!!!
풀이
여기서 눈여겨 볼건 defaultdict 의 활용법이다. 이게 빛을 발하는건 5번 째 줄에있는 dict[''.join(sorted(s))].append(s)
에서다. 만약 key 값이 없는데, append 메서드를 호출하면 어떻게 될까? 일반적인 dict 였다면 out of range 에러가 발생했겠지만, defaultdict은 기본값으로 비어있는 리스트를 만들고 그 메서드를 실행한다!!
Last updated