Level 3. 베스트앨범
장르별 총 플레이 시간을 계산하기 위한 맵 1개, 장르별 플레이 타임이 가장 긴 곡 2개를 추리기 위한 맵 1개를 사용해 해결했다.
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
#include <algorithm>
using namespace std;
vector<int> solution(vector<string> genres, vector<int> plays)
{
vector<int> answer;
size_t N = genres.size();
unordered_map<string, int> u1;
unordered_map<string, vector<pair<int, int>>> u2;
for (int i = 0; i < N; ++i)
{
u1[genres[i]] += plays[i];
u2[genres[i]].push_back({plays[i], i});
}
vector<pair<string, int>> v1(u1.begin(), u1.end());
sort(v1.begin(), v1.end(), [](auto& pr1, auto& pr2) { return pr1.second > pr2.second; });
for (auto& v2 : u2)
sort(v2.second.begin(), v2.second.end(), [](auto& pr1, auto& pr2) { return pr1.first > pr2.first; });
for (auto& pr : v1)
{
string& genre = pr.first;
answer.emplace_back(u2[genre][0].second);
if (2 <= u2[genre].size())
answer.emplace_back(u2[genre][1].second);
}
return answer;
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 3. 네트워크 (0) | 2023.07.16 |
---|---|
Level 3. 단어 변환 (0) | 2023.07.15 |
Level 3. 이중우선순위큐 (0) | 2023.07.13 |
Level 3. 정수 삼각형 (0) | 2023.07.12 |
Level 2. 거리두기 확인하기 (0) | 2023.07.11 |