Skip to content

Commit 8e6a0e1

Browse files
committed
#236 group-anagrams solution
1 parent d1580f8 commit 8e6a0e1

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

โ€Žgroup-anagrams/sungjinwi.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""
2+
anagram์€ sortํ•˜๋ฉด ๋™์ผํ•˜๋‹ค๋Š” ์„ฑ์งˆ์„ ์ด์šฉํ•ด์„œ
3+
sorted str์„ key๋กœ ๋ฌธ์ž์—ด str๋ฐฐ์—ด์„ value๋กœ ๊ฐ€์ง€๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค
4+
ans์€ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์ด์šฉํ•ด ๋”•์…”๋„ˆ๋ฆฌ์˜ value๋ฅผ ๋ฐฐ์—ด์— ๋„ฃ์–ด ๋งŒ๋“ ๋‹ค
5+
6+
TC : O(WlogW * N)
7+
strs์˜ ํ‰๊ท ๋ฌธ์ž์—ด๊ธธ์ด W, strs์˜ ๊ฐœ์ˆ˜๋ฅผ N์ด๋ผ๊ณ  ํ•  ๋–„
8+
sort์˜ ์‹œ๊ฐ„๋ณต์žก๋„ => WlogW
9+
for๋ฌธ => N
10+
11+
SC : O(W * N)
12+
anagrams๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด์™€ ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•œ๋‹ค
13+
14+
15+
- defaultdict ๋งŒ๋“ค ๋•Œ ์ธ์ž๋กœ ๋นˆ๋ฐฐ์—ด([])์ด ์•„๋‹Œ ํƒ€์ž…(list)์„ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค
16+
17+
- ์•Œ๊ณ ๋‹ฌ๋ ˆ์˜ ๋‹ค๋ฅธํ’€์ด๋กœ ๋ฌธ์ž์—ด์— ๋‚˜์˜ค๋Š” ์•ŒํŒŒ๋ฒณ ๋นˆ๋„ ์ˆ˜(count = [0] * 26)๋กœ anagram์„ ํŒ๋ณ„ํ•˜๋Š” ๋ฒ•๋„ ์žˆ๋‹ค
18+
๋”•์…”๋„ˆ๋ฆฌ์˜ key๋Š” ๋ถˆ๋ณ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— count๋ฅผ ํŠœํ”Œ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ ์ฃผ์˜
19+
20+
"""
21+
22+
from collections import defaultdict
23+
24+
class Solution:
25+
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
26+
anagrams = defaultdict(list)
27+
for s in strs:
28+
sorted_s = "".join(sorted(s))
29+
if sorted_s in anagrams:
30+
anagrams[sorted_s].append(s)
31+
else:
32+
anagrams[sorted_s] = [s]
33+
ans = [value for value in anagrams.values()]
34+
return ans

0 commit comments

Comments
ย (0)