Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 릿코드 파이썬
- 파이썬알고리즘풀기
- leetcode풀기
- 파이썬 알고리즘 풀기
- python sorted
- 파이썬 릿코드
- 릿코드풀기
- 잇츠디모
- python 릿코드
- 릿코드풀이
- 릿코드 풀기
- 파이썬알고리즘
- python Leetcode
- python zip_longest
- 알고리즘풀이
- 파이썬릿코드풀기
- 릿코드
- binary search
- 파이썬 알고리즘
- LeetCode
- python priority queue
- 파이썬 프로그래머스
- 상가수익률계산기
- leetcode풀이
- python 알고리즘
- 파이썬릿코드
- 코틀린기초
- 알고리즘풀기
- leetcode 풀기
- python xor
Archives
- Today
- Total
소프트웨어에 대한 모든 것
LeetCode 풀기 - 49. Group Anagrams 본문
반응형
49. Group Anagrams
https://leetcode.com/problems/group-anagrams/
문제)
솔루션1) hash
strs에 있는 단어 각각에 대해서 hash 값을 생성합니다.
hash 값이 동일하다면 동일한 anagram에 속합니다.
예를 들어, 아래와 같이 eat와 ate을 동일한 hash key이므로 동일한 그룹에 속하는 anagram입니다.
hash key를 생성할 때는 알파벳순, count순 오름차순 정렬을 합니다.
word | hash key |
eat | a1e1t1 |
ate | a1e1t1 |
bat | a1b1t1 |
풀이를 정리하자면,
1) 해쉬맵 생성 (key=hash key, value=[단어들])
1) 각 단어에 대에서 hash key를 생성
2) hash key와 단어를 해쉬맵에 추가
3) 해쉬맵의 vaues는 group anagrams로 묶임
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
def get_hash_key(word):
"""
get hash key from word
ex) eat
e -> 1
a -> 1
t -> 1
hash key = a1e1t1
"""
# key=alphabet, value=count
counter = Counter(word)
# dict to list
counter = list(counter.items())
# sorting by alphabet, count
counter = sorted(counter, key=lambda x: (x[0], x[1]))
keys = []
for c, count in counter:
keys.append(c)
keys.append(str(count))
return ''.join(keys)
d = defaultdict(list)
for word in strs:
key = get_hash_key(word)
d[key].append(word)
return list(d.values())
솔루션2) sorted(), defaultdict()
tuple 오브젝트는 hash map의 key로 사용할 수 있다는 특징을 이용합니다.
class Solution(object):
def groupAnagrams(self, strs):
strs = sorted(strs)
d = defaultdict(list)
for word in strs:
key = tuple(sorted(word))
d[key].append(word)
return list(d.values())
반응형
'알고리즘 > LeetCode' 카테고리의 다른 글
LeetCode 풀기 - 108. Convert Sorted Array to Binary Search Tree (0) | 2022.02.27 |
---|---|
LeetCode 풀기 - 662. Maximum Width of Binary Tree (0) | 2022.02.27 |
LeetCode 풀기 - 2169. Count Operations to Obtain Zero (0) | 2022.02.26 |
LeetCode 풀기 - 347. Top K Frequent Elements (0) | 2022.02.25 |
LeetCode 풀기 - 165. Compare Version Numbers (0) | 2022.02.25 |
Comments