Skip to content

Commit 5210bb2

Browse files
committed
Solution: Group Anagrams
1 parent f9204a9 commit 5210bb2

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

โ€Žgroup-anagrams/flynn.pyโ€Ž

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'''
2+
ํ’€์ด
3+
- ๋‘ ๋‹จ์–ด๊ฐ€ anagram ๊ด€๊ณ„๋ผ๋ฉด ๊ฐ ๋‹จ์–ด์˜ ์•ŒํŒŒ๋ฒณ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค
4+
- get_key ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๋‹จ์–ด๋ฅผ ์ด๋ฃจ๋Š” ์•ŒํŒŒ๋ฒณ ์ˆ˜์— ๋”ฐ๋ผ ๊ณ ์œ ํ•œ key๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
5+
- key๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•ด์‹œ๋งต์ธ key_map์„ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋Š” ๋‹จ์–ด์™€ anagram์ธ ๋‹จ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
6+
7+
Big O
8+
- N: ๋ฐฐ์—ด strs์˜ ํฌ๊ธฐ
9+
- K: ๋ฐฐ์—ด strs์˜ ์›์†Œ ์ค‘ ๊ฐ€์žฅ ๊ธธ์ด๊ฐ€ ๊ธด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด
10+
11+
- Time complexity: O(N * K)
12+
- ๋ฐฐ์—ด strs๋ฅผ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค -> N
13+
- ๊ฐ ๋ฌธ์ž์—ด๋งˆ๋‹ค ์•ŒํŒŒ๋ฒณ์˜ ์ˆ˜๋ฅผ ์„ธ๊ธฐ ์œ„ํ•ด ํ•œ ๋ฒˆ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค -> K
14+
15+
- Space complexity: O(N)
16+
- ๋ฐฐ์—ด strs์˜ ์›์†Œ ๋ชจ๋‘ ๊ณ ์œ ํ•œ key๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
17+
์ด ๊ฒฝ์šฐ key_map์˜ ํฌ๊ธฐ๋Š” N์— ๋น„๋ก€ํ•˜์—ฌ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค -> N
18+
'''
19+
20+
class Solution:
21+
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
22+
def get_key(s: str) -> str:
23+
count = [0] * 26
24+
for char in s:
25+
count[ord(char) - ord('a')] += 1
26+
res = ""
27+
for c in count:
28+
res += str(c) + ","
29+
return res
30+
31+
idx = 0
32+
key_map = {}
33+
res = []
34+
for s in strs:
35+
key = get_key(s)
36+
if key not in key_map:
37+
key_map[key] = idx
38+
idx += 1
39+
res.append([])
40+
res[key_map[key]].append(s)
41+
42+
return res

0 commit comments

Comments
ย (0)