
๋ฌธ์ ์ค๋ช
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ- genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค.
- plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋๋ค.
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- ์ฅ๋ฅด ์ข ๋ฅ๋ 100๊ฐ ๋ฏธ๋ง์ ๋๋ค.
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํํฉ๋๋ค.
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ ๋๋ค.
๋ฌธ์ ๋ถ์
1. ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด ์์ผ๋ก ์ ๋ ฌํ ๋ค์ 2. ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ก ์ ๋ ฌํ๊ณ 3. ์์ index๋ฅผ ๊ฐ์ง ์์๋ก ์ ๋ ฌํ ํ
ํ ์ฅ๋ฅด์ ์ต๋ 2๊ฐ์ฉ์ ๋ ธ๋๋ง ๊ฐ์ ธ์จ๋ค.
๋น์ทํ๊ฒ ์ ๋ ฌํ๋ ๋ฌธ์ ๋ฅผ ์ฝํ ์์ ํ์ด๋ณธ ์ ์์ง๋ง ์์ง ํด์๋ฅผ ๋ค๋ฃจ๊ธฐ ์ ์ด๋ผ ๋ฒกํฐ๋ก ์ ๋ ฌํ์๋๋ฐ, ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ๋ฉด ํด์๋ฅผ ์ฌ์ฉํด์ผ ํ๋๊ฑธ ์๊ฒ ๋์๋ค.
์ธ ๊ฐ์ง ์ ๋ ฌ ์กฐ๊ฑด์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ค์ ํ ์ง ๊ณ ๋ฏผ๋์๋๋ฐ ๊ฒ์ํด๋ณด๋ Map ์์ Map์ ๋ฃ์ ๊ตฌ์กฐ๊ฐ ์ฐ์ด๊ธธ๋ ๋ฐ๋ก ์ฌ์ฉํด๋ดค๋ค.
genre_plays: ์ฅ๋ฅด๋ง๋ค ์ฌ์ ํ์๋ฅผ ๊ณ์ฐํด ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋ฝ์ ์ ์๋๋ก ํ๋ ํด์๋งต
plays_id: <์ฅ๋ฅด, <์ธ๋ฑ์ค, ์ฌ์ํ์> > ๋ก ์ ์ฅ๋์ด ํด๋นํ๋ ์ฅ๋ฅด์ <์ธ๋ฑ์ค, ์ฌ์ํ์>๋ฅผ ๋ฝ์ ์ ์๋๋ก ํ๋ ํด์๋งต
์ฒ์์ ์์ ์ธ๋ฑ์ค ์์ผ๋ก ์ ๋ ฌํ๋ ๊ฑธ ๊น๋จน๊ณ ์ ์ถํด์ 2๋ฒ, 15๋ฒ์์ ์คํจ๋ด์๋๋ฐ cmp ํจ์๋ฅผ ์ ์ฉํด 2,3๋ฒ ์ ๋ ฌ ์กฐ๊ฑด์ ๋ง์กฑ์์ผฐ๋ค.
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair<int, int> a, pair<int, int> b){
if(a.first != b.first){
return a.first>b.first;
}
else{
return a.second<b.second;
}
};
vector<int> solution(vector<string> genres, vector<int> plays) {
ios::sync_with_stdio(0);
cin.tie(0);
vector<int> answer;
unordered_map<string, int> genre_plays;
unordered_map<string, map<int, int>> plays_id;
for(int i=0;i<genres.size();i++){
genre_plays[genres[i]]+=plays[i];
plays_id[genres[i]][i]=plays[i];
}
vector<pair<string, int> > v(genre_plays.begin(), genre_plays.end());
sort(v.begin(), v.end(), [](auto& a, auto& b){return a.second>b.second;});
for(auto e: v){
vector<pair<int, int> > temp;
string genre = e.first;
for(auto id: plays_id[genre]){
temp.push_back({id.second, id.first});
}
sort(temp.begin(), temp.end(), cmp);
int cnt =0;
for(auto t: temp){
if(cnt<2){
answer.push_back(t.second);
cnt++;
}
else break;
}
}
return answer;
}'Problem Solving > C ++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ๋ฒํธ ๋ชฉ๋ก (C++) (0) | 2022.06.04 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฐ๋ฌ (C++) (0) | 2022.05.17 |
| [๋ฐฑ์ค] 1477๋ฒ: ํด๊ฒ์ ์ธ์ฐ๊ธฐ (0) | 2022.05.10 |
๋๊ธ