애너그램
일종의 언어유희, 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것.
우리 말 예로, '문전박대'를 '대박전문'으로 바꿔 부르는 단어 등을 들 수 있다.
애너그램을 판단하는 가장 간단한 방법은 정렬하여 비교하는 것
애너그램 관계인 단어들을 정렬하면, 서로 같은 값을 갖게 되기 때문
정렬한 값을 key로 하여 dictionary에 추가한다. 만약 존재하지 않는 키를 삽입하려할 경우 KeyError
가 발생하므로, 항상 default를 생성해주는 defaultdict()
로 선언하며, 매번 키 존재 여부를 체크하지 않고 비교 구문을 생략해 간결하게 구성한다.
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
anagrams = collections.defaultdict(list)
for word in strs:
anagrams[''.join(sorted(word))].append(word)
return list(anagrams.values())