문제
Given an array of strings strs, group the anagrams together. You can return the answer in any order.
문자열을 받아 애너그램 단위로 그루핑하라.
입출력 예시
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""]
Output: [[""]]
Example 3:
Input: strs = ["a"]
Output: [["a"]]
해설 풀이
from collections import defaultdict
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
# defaultdict를 사용하여 딕셔너리 초기화
anagram = defaultdict(list);
# 주어진 문자열 리스트를 반복하면서 각 단어를 정렬하여 그룹에 추가
for word in strs:
sorted_word = ''.join(sorted(word)) # 문자열을 정렬하여 키로 사용
anagram[sorted_word].append(word) # 정렬된 문자열을 키로 사용하여 해당
# 애너그램 그룹들의 값들을 리스트로 반환
return list(anagram.values())
배운 내용
🔑 defaultdict
초기값으로 int, list, set 등을 초기화할 수 있음
문자열을 정렬하여 그 값을 키로 사용하기 위해 사용함
ex. 'eat', 'tea', 'ate'는 모두 동일한 문자들을 포함하고 있으며, 문자를 재배열하여 서로 다른 단어를 형성함. 이들을 아나그램 그룹으로 식별하기 위해서는 문자열을 정렬하여 'aet'로 만든 후 이를 키로 사용하여 딕셔너리에 저장
🔑 문자열 내의 문자 정렬하기
s1 = sorted(s)
- sorted()의 반환형이 list이기 때문에 정렬된 결과를 보려면 위와 같이 다른 변수에 대입하는 식을 써야 함
- 하나의 문자열로 만들기 위해서는 str = ''.join(sorted(s))와 같이 쓰기
참고
'Coding Test' 카테고리의 다른 글
[TIL/05.07] Leetcode: 3Sum (Python) (0) | 2024.05.07 |
---|---|
[TIL/05.07] Leetcode: Group Anagrams (Python) (0) | 2024.05.07 |
[TIL/04.12] Algorithm: Greedy (Java) (0) | 2024.04.13 |
[TIL/04.11] Algorithm: 정렬 (Java) (0) | 2024.04.12 |
[TIL/04.10] Algorithm: 정렬 (Java) (0) | 2024.04.10 |