Skip to content

Commit cfb2c82

Browse files
committed
refactor: Object to Map
1 parent 5a677bd commit cfb2c82

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

โ€Žgroup-anagrams/lledellebell.tsโ€Ž

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
* groupAnagrams(["a"]); // [["a"]]
1717
*
1818
* @description
19+
* - ๊ฐ ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜์—ฌ ๋™์ผํ•œ ๋ฌธ์ž๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ž์—ด๋“ค์„ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.
20+
* - ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด์„ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์‹œ๋งต(Map)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
21+
* - ์ตœ์ข…์ ์œผ๋กœ ํ•ด์‹œ๋งต์˜ ๊ฐ’๋“ค๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
22+
*
23+
* @complexity
1924
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N * K log K)
2025
* ใ„ด N: ์ž…๋ ฅ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์˜ ๊ธธ์ด
2126
* ใ„ด K: ๊ฐ ๋ฌธ์ž์—ด์˜ ํ‰๊ท  ๊ธธ์ด
@@ -24,25 +29,17 @@
2429
* ํ•ด์‹œ๋งต์— ์ €์žฅ๋˜๋Š” ํ‚ค์™€ ๊ฐ’์˜ ์ด ๊ธธ์ด์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค.
2530
*/
2631
function groupAnagrams(strs: string[]): string[][] {
27-
// ์• ๋„ˆ๊ทธ๋žจ ๊ทธ๋ฃน์„ ์ €์žฅํ•  ํ•ด์‹œ๋งต
28-
const anagrams: Record<string, string[]> = {};
32+
const anagrams = new Map<string, string[]>();
2933

30-
// ์ž…๋ ฅ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์ˆœํšŒ
3134
for (const str of strs) {
32-
// ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜์—ฌ ์• ๋„ˆ๊ทธ๋žจ ๊ทธ๋ฃน์˜ ํ‚ค ์ƒ์„ฑ
3335
const key = str.split('').sort().join('');
34-
35-
// ํ‚ค๊ฐ€ ํ•ด์‹œ๋งต์— ์—†์œผ๋ฉด ์ดˆ๊ธฐํ™”
36-
if (!anagrams[key]) {
37-
anagrams[key] = [];
36+
if (!anagrams.has(key)) {
37+
anagrams.set(key, []);
3838
}
39-
40-
// ํ•ด๋‹น ํ‚ค์— ๋ฌธ์ž์—ด ์ถ”๊ฐ€
41-
anagrams[key].push(str);
39+
anagrams.get(key)!.push(str);
4240
}
4341

44-
// ํ•ด์‹œ๋งต์˜ ๊ฐ’๋“ค๋งŒ ๋ฐ˜ํ™˜ (์• ๋„ˆ๊ทธ๋žจ ๊ทธ๋ฃน)
45-
return Object.values(anagrams);
42+
return Array.from(anagrams.values());
4643
}
4744

4845
console.log(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"])); // [["bat"], ["nat", "tan"], ["ate", "eat", "tea"]]

0 commit comments

Comments
ย (0)