Make Unreal REAL.
article thumbnail
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
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그