|
3 | 3 | - [๋ต์ ์ฝ๋ ์ ์ถ๋ฒ](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C)
|
4 | 4 |
|
5 | 5 | # Problem
|
6 |
| -- ๋ฌธ์ ๋งํฌ : |
7 |
| -- ๋ฌธ์ ์ด๋ฆ : |
8 |
| -- ๋ฌธ์ ๋ฒํธ : |
9 |
| -- ๋์ด๋ : |
| 6 | +- ๋ฌธ์ ๋งํฌ : https://leetcode.com/problems/group-anagrams/description/ |
| 7 | +- ๋ฌธ์ ์ด๋ฆ : Group Anagrams |
| 8 | +- ๋ฌธ์ ๋ฒํธ : 49 |
| 9 | +- ๋์ด๋ : medium |
10 | 10 | - ์นดํ
๊ณ ๋ฆฌ :
|
11 | 11 |
|
12 | 12 | # ๋ฌธ์ ์ค๋ช
|
13 | 13 |
|
14 | 14 |
|
15 | 15 | # ์์ด๋์ด
|
16 |
| -- ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํ๋์ง ์์ |
17 |
| -- ํฌ์ค vs ์ต์ ํ ์์ด๋์ด ์ฐจ์ด ๋ฑ |
18 |
| -- ์ก๋์ ๋ํ ๊ณ ๋ ค |
| 16 | +- string์ ์ ๋ ฌ -> key๋ก ์ฌ์ฉ ๊ฐ๋ฅ |
| 17 | + - ์ ๋ ฌ์ ์ด์ฉํด ์๋ก ๋ค๋ฅธ permutation(anagram)๋ค์ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์. |
| 18 | +- unordered_map์ ์ฌ์ฉํด์ key lookup์ด ํ๊ท ์ ์ผ๋ก **O(1)**์ ๊ฐ๋ฅํ๋ฏ๋ก ์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋งค์ฐ ํจ์จ์ ์. |
19 | 19 |
|
20 | 20 | # โ
์ฝ๋ (Solution)
|
21 |
| - |
| 21 | +``` |
| 22 | +class Solution { |
| 23 | +public: |
| 24 | + vector<vector<string>> groupAnagrams(vector<string>& strs) { |
| 25 | + vector<vector<string>> res; |
| 26 | + unordered_map<string, vector<string>> um; |
| 27 | + for(auto str: strs){ |
| 28 | + string key= str; |
| 29 | + sort(key.begin(), key.end()); |
| 30 | + um[key].push_back(str); |
| 31 | + } |
| 32 | + for(auto vec = um.begin();vec != um.end(); vec++){ |
| 33 | + res.push_back(vec->second); |
| 34 | + } |
| 35 | + return res; |
| 36 | + } |
| 37 | +}; |
| 38 | +
|
| 39 | +``` |
22 | 40 | # ๐ ์ฝ๋ ์ค๋ช
|
23 |
| - |
| 41 | +- length๊ฐ 10^4 ์ดํ + sort -> input ์ ์์ ์๊ฐ ๋ด ์ฒ๋ฆฌ ๊ฐ๋ฅ |
| 42 | + - ์ ๋ ฌ์ ์ด์ฉํด ์๋ก ๋ค๋ฅธ permutation(anagram)๋ค์ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์. |
| 43 | +- unordered_map์ ์ฌ์ฉํด์ key lookup์ด ํ๊ท ์ ์ผ๋ก **O(1)**์ ๊ฐ๋ฅํ๋ฏ๋ก ์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋งค์ฐ ํจ์จ์ ์. |
| 44 | +- |
24 | 45 |
|
25 | 46 | # ์ต์ ํ ํฌ์ธํธ (Optimality Discussion)
|
26 |
| -โข ์ต์ ํํ ์ด์ ์ ์๋ฆฌ |
27 |
| -โข ๋ ์ค์ผ ์ ์๋ ์ฌ์ง๋ ์๋๊ฐ? |
28 |
| -โข ๊ธฐ์กด ๋ฐฉ๋ฒ ๋๋น ์ผ๋ง๋ ํจ์จ์ ์ด์๋์ง |
| 47 | +- ๋ถํ์ํ ๋ฌธ์์ด ๋ณต์ฌ ๋ฐฉ์ง: |
| 48 | + - for(auto& str : strs) ์ฒ๋ผ auto ๋ค์ &(๋ ํผ๋ฐ์ค) ๋ฅผ ์ฌ์ฉํ๋ฉด, str์ ๋ณต์ฌํ์ง ์๊ณ ์ฐธ์กฐ๋ก ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ผ ์ ์์. |
| 49 | +- key string ์์ฑ ๋น์ฉ ์ค์ด๊ธฐ: |
| 50 | + - ๋ฌธ์์ด์ ๋งค๋ฒ ์ ๋ ฌํ๋ฉด O(K log K) (K๋ ๋ฌธ์์ด ๊ธธ์ด) ๋น์ฉ์ด ๋ฆ. |
| 51 | + - ๋ง์ฝ ๋ชจ๋ ์
๋ ฅ ๋ฌธ์์ด์ด ์์ด ์๋ฌธ์(a~z)๋ก ์ ํ๋๋ค๋ฉด, 26๊ฐ ์ํ๋ฒณ์ ๋น๋์ ๋ฐฐ์ด์ ์ฌ์ฉํด์ O(K)๋ก key๋ฅผ ๋ง๋ค ์๋ ์์. |
| 52 | + - ์ด ๊ฒฝ์ฐ ์ ๋ ฌ์ด ์๋๋ผ counting ๊ธฐ๋ฐ key ์์ฑ. |
29 | 53 |
|
30 | 54 | # ๐งช ํ
์คํธ & ์ฃ์ง ์ผ์ด์ค
|
31 | 55 |
|
|
0 commit comments