|
| 1 | +/* |
| 2 | + * ์ฒซ๋ฒ์จฐ ํ์ด: ๊ฐ ๋จ์ด๋ง๋ค ์ด์ ์ ์ฒ๋ฆฌํ ๋จ์ด๋ค๊ณผ ์ผ์ผ์ด ๋น๊ตํ์ฌ ์ ๋๊ทธ๋จ ์ฌ๋ถ ํ์ธ |
| 3 | + * ์ฒซ๋ฒ์งธ ํ์ด๋ก๋ ํต๊ณผ๋ ํจ |
| 4 | + * ์๊ฐ๋ณต์ก๋: O(nยฒ*k), ๊ณต๊ฐ๋ณต์ก๋: O(n*k) (n: ๋จ์ด ์, k: ํ๊ท ๋จ์ด ๊ธธ์ด) |
| 5 | + */ |
| 6 | +/*var groupAnagrams = function (strs) { |
| 7 | + if (strs.length === 1) return [strs]; |
| 8 | +
|
| 9 | + const answer = [[strs[0]]]; |
| 10 | +
|
| 11 | + for (let i = 1; i < strs.length; i++) { |
| 12 | + let flag = false; |
| 13 | + for (let k = 0; k < answer.length; k++) { |
| 14 | + const word = answer[k][0]; |
| 15 | + if (isAnagram(word, strs[i])) { |
| 16 | + answer[k].push(strs[i]); |
| 17 | + flag = true; |
| 18 | + } |
| 19 | + } |
| 20 | + if (!flag) answer.push([strs[i]]); |
| 21 | + } |
| 22 | +
|
| 23 | + return answer; |
| 24 | +}; |
| 25 | +
|
| 26 | +var isAnagram = function (s1, s2) { |
| 27 | + if (s1.length !== s2.length) return false; |
| 28 | +
|
| 29 | + // ์์ด ์๋ฌธ์ ๊ฐ์ ์ด 26๊ฐ |
| 30 | + const code = new Array(26).fill(0); |
| 31 | +
|
| 32 | + for (let i = 0; i < s1.length; i++) { |
| 33 | + code[s1[i].charCodeAt() - 97]++; |
| 34 | + code[s2[i].charCodeAt() - 97]--; |
| 35 | + } |
| 36 | + return code.every((x) => x === 0); |
| 37 | +}; |
| 38 | +*/ |
| 39 | +/////////////////////////////////////////////////////////////// |
| 40 | + |
| 41 | +/* |
| 42 | + * ๋๋ฒ์จฐ ํ์ด: ์ ๋ ฌ๋ ๋ฌธ์์ด์ ํค๋ก ์ฌ์ฉํ์ฌ ํด์๋งต์ ๊ทธ๋ฃนํ |
| 43 | + * ์๊ฐ๋ณต์ก๋: O(n*k*log(k)), ๊ณต๊ฐ๋ณต์ก๋: O(n*k) (n: ๋จ์ด ์, k: ํ๊ท ๋จ์ด ๊ธธ์ด) |
| 44 | + */ |
| 45 | +/** |
| 46 | + * @param {string[]} strs |
| 47 | + * @return {string[][]} |
| 48 | + */ |
| 49 | +var groupAnagrams = function (strs) { |
| 50 | + if (strs.length === 1) return [strs]; |
| 51 | + |
| 52 | + // ํด์๋งต์ผ๋ก ์ ๋๊ทธ๋จ ๊ทธ๋ฃน ๊ด๋ฆฌ |
| 53 | + const answer = {}; |
| 54 | + |
| 55 | + for (let i = 0; i < strs.length; i++) { |
| 56 | + // ์ ๋๊ทธ๋จ์ ์ ๋ ฌํ๋ฉด ๋์ผํ ๋ฌธ์์ด์ด ๋จ |
| 57 | + // k๋ ์ต๋ 100์ผ๋ก ์ ํ๋์ด ์์ด ์ ๋ ฌ(O(k log k))์ด ํจ์จ์ ์ด๋ฏ๋ก |
| 58 | + // ์ฒซ ๋ฒ์งธ ํ์ด์ ์นด์ดํ
๋ฐฉ์ ๋์ ๊ฐ๋จํ ์ ๋ ฌ๋ก ํ๋ณ ๊ฐ๋ฅ |
| 59 | + const sort = [...strs[i]].sort().join(""); |
| 60 | + |
| 61 | + // ์ด๋ฏธ ๊ฐ์ ํค๊ฐ ์์ผ๋ฉด ํด๋น ๊ทธ๋ฃน์ ์ถ๊ฐ |
| 62 | + if (sort in answer) { |
| 63 | + answer[sort].push(strs[i]); |
| 64 | + } else { |
| 65 | + // ์๋ก์ด ๊ทธ๋ฃน ์์ฑ |
| 66 | + answer[sort] = [strs[i]]; |
| 67 | + } |
| 68 | + } |
| 69 | + |
| 70 | + return Object.values(answer); |
| 71 | +}; |
0 commit comments