1
+ #include < iostream>
2
+ #include < vector>
3
+ #include < unordered_map>
4
+ #include < sort>
5
+
6
+ using namespace std ;
7
+
8
+ /*
9
+ TC: O(nlogn)
10
+ - ํด์๋งต์ ์์ ์ฝ์
: O(n)
11
+ - ํด์๋งต์ ๋ฒกํฐ๋ก ๋ณํ: O(n)
12
+ - ๋ฒกํฐ ์ ๋ ฌ: O(nlogn) ... sort()
13
+ => ์ ์ฒด ์๊ฐ ๋ณต์ก๋๋ O(nlogn)
14
+ SC: O(n)
15
+ - ํด์๋งต ์ ์ฅ ๊ณต๊ฐ: O(n)
16
+ - ๋ฒกํฐ ๋ณํ ๊ณต๊ฐ: O(n)
17
+ => ์ ์ฒด ๊ณต๊ฐ ๋ณต์ก๋๋ O(n)
18
+
19
+ ํ์ด ๋ฐฉ๋ฒ: nums๋ฅผ ์ํํ๋ฉฐ ๊ฐ ์ซ์์ ๋น๋๋ฅผ ํด์๋งต umap์ ์ ์ฅํ๊ณ , ํด์๋งต์ pair ํํ์ ๋ฒกํฐ๋ก ๋ณํํ๋ค
20
+ ๊ทธ๋ฆฌ๊ณ umap์ ๋น๋๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์์ k๊ฐ ์ซ์๋ฅผ ์ถ์ถํด์ ๋ฐํํ๋ค
21
+ */
22
+
1
23
bool cmp (const pair<int , int >& a, const pair<int , int >& b)
2
24
{
3
25
if (a.second == b.second )
@@ -12,17 +34,17 @@ class Solution {
12
34
13
35
for (int i = 0 ; i < nums.size (); i++)
14
36
{
15
- auto tmp = umap.find (nums[i]);
16
- if (tmp != umap.end ())
37
+ auto tmp = umap.find (nums[i]); // umap์ nums[i]๊ฐ ์กด์ฌํ๋์ง ํ์
38
+ if (tmp != umap.end ()) // ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ๊ฐ์ + 1 ํ๊ณ
17
39
tmp->second += 1 ;
18
- else
40
+ else // ์กด์ฌํ์ง ์๋๋ค๋ฉด nums[i]๋ฅผ umap์ ์ฝ์
ํ๋ค
19
41
umap.insert (make_pair (nums[i], 1 ));
20
42
}
21
43
vector<pair<int ,int >> vec (umap.begin (), umap.end ()); // map์ vector๋ก ์ด๋
22
- sort (vec.begin (), vec.end (), cmp);
44
+ sort (vec.begin (), vec.end (), cmp); // vec๋ฅผ ๊ฐ์์ ๋ฐ๋ผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ค๋ค
23
45
24
46
vector<int > result;
25
- for (int i = 0 ; i < k; i++)
47
+ for (int i = 0 ; i < k; i++) // ์ ๋ ฌ๋ vec๋ฐฐ์ด์ ์์์๋ถํฐ k๊ฐ๊น์ง ํ์ํด์ ๋ฐํํ๋ค
26
48
result.push_back (vec[i].first );
27
49
return (result);
28
50
}
0 commit comments