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+
123bool cmp (const pair<int , int >& a, const pair<int , int >& b)
224{
325 if (a.second == b.second )
@@ -12,17 +34,17 @@ class Solution {
1234
1335 for (int i = 0 ; i < nums.size (); i++)
1436 {
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 ํ๊ณ
1739 tmp->second += 1 ;
18- else
40+ else // ์กด์ฌํ์ง ์๋๋ค๋ฉด nums[i]๋ฅผ umap์ ์ฝ์
ํ๋ค
1941 umap.insert (make_pair (nums[i], 1 ));
2042 }
2143 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๋ฅผ ๊ฐ์์ ๋ฐ๋ผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ค๋ค
2345
2446 vector<int > result;
25- for (int i = 0 ; i < k; i++)
47+ for (int i = 0 ; i < k; i++) // ์ ๋ ฌ๋ vec๋ฐฐ์ด์ ์์์๋ถํฐ k๊ฐ๊น์ง ํ์ํด์ ๋ฐํํ๋ค
2648 result.push_back (vec[i].first );
2749 return (result);
2850 }
0 commit comments