728x90
나의 풀이
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
keys=[]
anagrams={}
answer=[]
for s in strs:
sort_str=sorted(s)
sort_str=''.join(sort_str)
if sort_str in keys:
anagrams[sort_str].append(s)
else:
keys.append(sort_str)
anagrams[sort_str]=[s]
return list(anagrams.values())
먼저 단어를 정렬하여 그룹을 정한 다음 해당 그룹에 단어를 하나씩 추가하는 방버
풀이
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())
- collections.defaultdict(list)를 통해 조건문 없이 키가 없을 경우 빈리스트를 생성하게 함.
- 정렬 후 합치고 이를 딕셔너리에 추가하는 것을 깔끔하게 한줄로 처리
이게 진정 파이써닉한 코드인가...
반응형
'알고리즘' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰] 가장 긴 팰린드롬 부분 문자열 (0) | 2022.02.21 |
---|---|
[파이썬 알고리즘 인터뷰] 두 수의 합 (0) | 2022.02.18 |
[파이썬 알고리즘 인터뷰] 가장 흔한 단어 (0) | 2022.02.18 |
[파이썬 알고리즘 인터뷰] 로그파일 재정렬 (0) | 2022.02.18 |
[파이썬 알고리즘 인터뷰] 문자열 뒤집기 (0) | 2022.02.14 |