리트코드 - 그룹 애너그램

최태양 (choittttt)·2024년 1월 3일

리트코드

목록 보기
2/2
post-thumbnail

https://leetcode.com/problems/group-anagrams/

문제는 위 링크 참고

문자의 순서를 뒤바꿨을때 같은 문자들을 찾는 문제이다.

Example 1:

Input: strs = ["eat","tea","tan","ate","nat","bat"]

Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

해결 Tip

  1. 각 문자를 정렬하면 같은 문자들은 같은 값을 가질 것이다.
  2. 1에서 얻은 값을 딕셔너리에 추가하여 애너그램끼리 같은 키값을 가지게한다.
리스트 안에 있는 문자를 정렬하여 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())
profile
Better Than Yesterday

0개의 댓글