
https://leetcode.com/problems/group-anagrams/
문제는 위 링크 참고
문자의 순서를 뒤바꿨을때 같은 문자들을 찾는 문제이다.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
리스트 안에 있는 문자를 정렬하여 join한다. 해당 값을 딕셔너리의 키값으로 만든다.
딕셔너리에 해당 키값이 없는데 추가하면 오류가 발생하므로 try, except으로 처리하였다.
dict_group = {}
for i in strs:
w = ''.join(sorted(i))
try:
dict_group[w].append(i)
except:
dict_group[w] = [i]
return list(dict_group.values())
매 반복문 마다 try, except문으로 처리하는게 불편해서 다른 방안을 찾아보니 collections.defaultdict 를 이용하여 존재하지 않는 키를 삽입해도 에러가 나지 않도록 디폴트를 생성하여 해결할 수 있었다.
dict_group = collections.defaultdict(list)
for i in strs:
w = ''.join(sorted(i))
dict_group[w].append(i)
return list(dict_group.values())