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
- 파이썬릿코드
- binary search
- 파이썬알고리즘풀기
- python priority queue
- 파이썬 프로그래머스
- 릿코드 풀기
- 파이썬 알고리즘
- 릿코드
- leetcode 풀기
- 파이썬알고리즘
- python zip_longest
- python sorted
- 잇츠디모
- 릿코드풀이
- leetcode풀기
- 알고리즘풀기
- 파이썬 알고리즘 풀기
- 상가수익률계산기
- python xor
- 릿코드풀기
- 파이썬릿코드풀기
- 파이썬 릿코드
- 알고리즘풀이
- LeetCode
- 코틀린기초
- python 알고리즘
- 릿코드 파이썬
- leetcode풀이
- python 릿코드
- python Leetcode
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