๋ฌธ์ ๋งํฌ: programmers.co.kr/learn/courses/30/lessons/42579
ํ์ด
unordered_map์ ์ฅ๋ฅด ์ด๋ฆ์ key๋ก, (์ฅ๋ฅด๋ณ ์ฌ์ ํ์, (๋ ธ๋์ ๊ณ ์ ๋ฒํธ, ๋ ธ๋์ ์ฌ์ ํ์) ๋ฐฐ์ด)์ value๋ก ์ ์ฅํ๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์ ๊ฐ ์ฃผ์ด์ก์ ๋
genres | plays | return |
[classic, pop, classic, classic, pop] | [500, 600, 150, 800, 2500] | [4, 1, 3, 0] |
[classic] : (1450, { (0, 500), (2, 150), (3, 800) } )
[pop] : (3100, { (1, 600), (4, 2500) } )
์์ ๊ฐ์ ํํ๋ก ์ ์ฅ๋๋ค.
์ ์ฅ๋ unordered_map์ vector๋ก ์ฎ๊ธด ๋ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด ์์๋๋ก ์ ๋ ฌํ๋ค. (cmp1)
์ดํ ์ฅ๋ฅด๋ณ ๋ ธ๋ ์ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋ ์์๋๋ก ์ ๋ ฌํ ๋ค(cmp2), ๋งจ ์์ ๋ ธ๋ 2๊ณก์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ๊ฐํ๋ค.
์์ค์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include <string>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
bool cmp1(const pair<string, pair<int, vector<pair<int, int>>>>& a, const pair<string, pair<int, vector<pair<int, int>>>>& b) {
if(a.second.first == b.second.first) return a.first < b.first;
return a.second.first > b.second.first;
}
bool cmp2(const pair<int, int>& a, const pair<int, int>& b) {
if(a.second == b.second) return a.first < b.first;
return a.second > b.second;
}
vector<int> solution(vector<string> genres, vector<int> plays) {
vector<int> answer;
unordered_map<string, pair<int, vector<pair<int, int>>>> m;
for(int i = 0; i < genres.size(); i++) {
m[genres[i]].first += plays[i]; // ์ฅ๋ฅด๋ณ ์ฌ์ ํ์ ์ฆ๊ฐ
m[genres[i]].second.push_back(make_pair(i, plays[i])); // ์ฅ๋ฅด๋ณ๋ก ๋
ธ๋์ (๊ณ ์ ๋ฒํธ, ์ฌ์ ํ์) ์ ์ฅ
}
vector<pair<string, pair<int, vector<pair<int, int>>>>> v(m.begin(), m.end());
sort(v.begin(), v.end(), cmp1); // ์ฅ๋ฅด๋ณ ์ฌ์ ํ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
for(auto it: v) {
sort(it.second.second.begin(), it.second.second.end(), cmp2); // ์ฅ๋ฅด ๋ด ๋
ธ๋๋ณ ์ฌ์ ํ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
answer.push_back(it.second.second[0].first);
if(it.second.second.size() > 1) answer.push_back(it.second.second[1].first);
}
return answer;
}
|
cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
728x90
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋จ์์นด๋ฉ๋ผ (0) | 2021.02.01 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ฌ ์ฐ๊ฒฐํ๊ธฐ (0) | 2021.01.26 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์์ฅ (0) | 2021.01.23 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2021.01.22 |
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2021.01.22 |