반응형
* leetcode 49. Group Anagrams
Q. 문자열 배열을 받아 애너그램 단위로 그룹핑하라.
# 입력
["eat", "tea", "tan", "ate", "nat", "bat"]
# 출력
[
["ate", "eat", "tea"],
["nat", "tan"],
["bat"]
]
풀이 1. 정렬하여 딕셔너리에 추가
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
# defaultdict를 사용하면 항상 디폴트 키를 생성해주기 때문에 KetError를 피할 수 있다.
anagrams = collections.defaultdict(list)
for word in strs:
# sorted로 정렬한 문자열을 키값으로 사용하기 위해 join을 사용하여 합쳐준다.
# sorted("eat") = ['a', 'e', 't']
# ''.join(sorted("eat")) = ['aet']
anagrams[''.join(sorted(word))].append(word)
return anagrams.values()
Python 정렬 방법
"""sorted()"""
# 기본 정렬
a = [2, 5, 1, 9, 7]
sorted(a)
-> [1, 2, 5, 7, 9]
# key 옵션을 사용한 정렬
c = ['ccc', 'aaaa', 'd', 'bb']
sorted(c, key=len) # key옵션에 별도 키 또는 함수를 지정할 수 있다.
-> ['d', 'bb', 'ccc', 'aaaa']
a = ['cde', 'cfc', 'abc']
def fn(s):
return s[0], s[-1]
sorted(a, key=fn) # 함수 fn을 활용해 첫 문자열(s[0])과 마지막 문자열(s[-1]) 순으로 정렬하도록 지정
-> ['abc', 'cfc', 'cde']
sorted(a, key=lambda s: (s[0], s[-1])) # lambda 표현식으로 한줄로 표현 가능하다.
"""sort()"""
a.sort() # sort()는 리스트 자체를 제자리 정렬한다.
a = a.sort() # sort()는 None을 반환하므로 잘못된 구문.
반응형
'프로그래밍 > [ Python ]' 카테고리의 다른 글
[배열] 두 수의 합 (0) | 2021.01.12 |
---|---|
[문자열 조작] 가장 긴 팰린드롬 부분 문자열 (0) | 2021.01.11 |
[문자열 조작] 가장 흔한 단어 (0) | 2021.01.11 |
[문자열 조작] 로그 파일 재정렬 (0) | 2021.01.11 |
[문자열 조작] 문자열 뒤집기 (0) | 2021.01.11 |