Skip to content

Commit 830a03e

Browse files
committed
Group Anagrams solution
1 parent a01fdcf commit 830a03e

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* ๋ฌธ์ž์—ด ๋ฐฐ์—ด strs๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์• ๋„ˆ๊ทธ๋žจ๋ผ๋ฆฌ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋ฌธ์ œ
3+
* ์• ๋„ˆ๊ทธ๋žจ: ๊ฐ™์€ ๋ฌธ์ž๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๋“ค
4+
*
5+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ๊ฐ ๋ฌธ์ž ์ถœํ˜„๋นˆ๋„๋ฅผ ์นด์šดํŒ…ํ•˜๋Š” ๋ฐฉ์‹
6+
* 1. ๊ฐ ๋ฌธ์ž์—ด์„ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ‚ค๋ฅผ ์ƒ์„ฑ
7+
* 2. Map์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ๊ทธ๋ฃนํ™”
8+
* 3. Map์˜ ๊ฐ’๋“ค์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
9+
*
10+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(n * k) (n: ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜, k: ๋ฌธ์ž์—ด ๊ธธ์ด) -> ๋‹จ์ˆœ ์นด์šดํŒ…
11+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(n * k) -> ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ
12+
*/
13+
14+
/**
15+
* @param {string[]} strs
16+
* @return {string[][]}
17+
*/
18+
var groupAnagrams = function (strs) {
19+
const map = new Map();
20+
21+
for (let str of strs) {
22+
const count = new Array(26).fill(0); // ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ ์ดˆ๊ธฐํ™”
23+
for (let i = 0; i < str.length; i++) {
24+
const index = str.charCodeAt(i) - 'a'.charCodeAt(0); // ์•ŒํŒŒ๋ฒณ ์ธ๋ฑ์Šค ๊ณ„์‚ฐ
25+
count[index]++; // ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ ์ฆ๊ฐ€
26+
}
27+
const key = count.join('#'); // ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ‚ค ์ƒ์„ฑ
28+
if (!map.has(key)) {
29+
map.set(key, []); // ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ
30+
}
31+
map.get(key).push(str); // ํ•ด๋‹น ํ‚ค์— ๋ฌธ์ž์—ด ์ถ”๊ฐ€
32+
}
33+
34+
return Array.from(map.values()); // Map์˜ ๊ฐ’๋“ค์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
35+
};

0 commit comments

Comments
ย (0)