Skip to content

Commit 5399839

Browse files
Create taurus09318976.py
1 parent 2d1aec0 commit 5399839

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'''
2+
์ด ๋ฌธ์ œ๋Š” ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด์„ ํ‚ค(key)๋กœ ์‚ฌ์šฉํ•ด ๊ฐ™์€ ์• ๋„ˆ๊ทธ๋žจ๋ผ๋ฆฌ ๊ทธ๋ฃนํ™”ํ•จ
3+
์ฆ‰, ๊ฐ ๋‹จ์–ด๋ฅผ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ฐ™์€ ๊ทธ๋ฃน์ž„
4+
5+
["eat","tea","tan","ate","nat","bat"]
6+
๋‹จ์–ด | ์ •๋ ฌ ๊ฒฐ๊ณผ | ํ‚ค | groups ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€ํ™”
7+
eat aet aet {'aet': ['eat']}
8+
tea aet aet {'aet': ['eat', 'tea']}
9+
tan ant ant {'aet': [...], 'ant': ['tan']}
10+
ate aet aet {'aet': ['eat','tea','ate'], ...}
11+
nat ant ant {'ant': ['tan','nat'], ...}
12+
bat abt abt {'abt': ['bat'], ...}
13+
14+
'''
15+
class Solution:
16+
def groupAnagrams(self, strs: List[str]):
17+
groups = defaultdict(list) # defaultdict : ํ‚ค๊ฐ€ ์—†์–ด๋„ ์ž๋™์œผ๋กœ ๋นˆ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
18+
19+
for word in strs: # ๊ฐ ๋‹จ์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธ
20+
sorted_word = ''.join(sorted(word)) # ๋‹จ์–ด๋ฅผ ์ •๋ ฌํ•ด ํ‚ค ์ƒ์„ฑ (์˜ˆ: "tea" โ†’ "aet")
21+
groups[sorted_word].append(word) # ๊ฐ™์€ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋‹จ์–ด๋ฅผ ๊ทธ๋ฃน์— ์ถ”๊ฐ€
22+
23+
return list(groups.values()) # ๊ทธ๋ฃน๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜
24+
25+
'''
26+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(n ร— klogk) + O(n) = O(n ร— klogk)
27+
n: ๋‹จ์–ด ๊ฐœ์ˆ˜
28+
k: ๋‹จ์–ด์˜ ์ตœ๋Œ€ ๊ธธ์ด
29+
๊ฐ ๋‹จ์–ด ์ •๋ ฌ์— O(k log k) ์‹œ๊ฐ„ ์†Œ์š” (ex. 5๊ธ€์ž โ†’ 5 log 5 โ‰ˆ 11)
30+
๋‹จ์–ด ์ •๋ ฌ: ๊ฐ ๋‹จ์–ด๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐ O(k log k) ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.
31+
ํŒŒ์ด์ฌ์˜ sorted() ํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Timsort ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ,
32+
์ด์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ํ‰๊ท ์ ์œผ๋กœ O(k log k)์ž„
33+
n๊ฐœ์˜ ๋‹จ์–ด ์ฒ˜๋ฆฌ: ๋ชจ๋“  ๋‹จ์–ด์— ๋Œ€ํ•ด ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ n ร— O(k log k) = O(n ร— k log k)610.
34+
๋”•์…”๋„ˆ๋ฆฌ ์—ฐ์‚ฐ: ์ •๋ ฌ๋œ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹จ์–ด๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ์ž‘์—…์€ O(1) ์‹œ๊ฐ„์— ์ด๋ฃจ์–ด์ง€๋ฉฐ,
35+
์ „์ฒด์ ์œผ๋กœ O(n) ์‹œ๊ฐ„์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค
36+
37+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(n ร— k) + O(n ร— k) = O(n ร— k)
38+
์ •๋ ฌ๋œ ํ‚ค ์ €์žฅ: ๊ฐ ๋‹จ์–ด๋ฅผ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•จ
39+
๋‹จ์–ด ๊ธธ์ด๊ฐ€ k์ผ ๋•Œ, ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด ์ €์žฅ์— O(k) ๊ณต๊ฐ„์ด ํ•„์š”ํ•จ
40+
n๊ฐœ์˜ ๋‹จ์–ด์— ๋Œ€ํ•ด ์ด O(n ร— k) ๊ณต๊ฐ„์ด ์‚ฌ์šฉ๋จ
41+
๋”•์…”๋„ˆ๋ฆฌ ๊ฐ’ ์ €์žฅ: ์›๋ณธ ๋‹จ์–ด๋ฅผ ๊ทธ๋ฃน๋ณ„๋กœ ์ €์žฅํ•จ. ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ
42+
43+
'''

0 commit comments

Comments
ย (0)