#include <string>
#include <vector>
#include <map>
#include <algorithm>
 
using namespace std;
 
bool cmp(pair<string,int> pairFirst, pair<string,int> pairSecond)
{
    return pairFirst.second < pairSecond.second;
}
 
vector<int> solution(vector<string> genres, vector<int> plays)
{
    vector<int> answer = {};
 
    // 가장 큰 값이 어떤 건지 확인용도
    map<string, int> ordered_Map = {};
 
    // 어떤 값이 들어갈 지 큰값에 맞춰서 (같은 값이 있을 수 있어서 multi)
    map<string, multimap<int,int,greater<int>>> playMap = {};
 
    for (int i = 0; i < plays.size(); ++i)
    {
        ordered_Map[genres[i]] += plays[i];
        playMap[genres[i]].insert({ plays[i], i });
    }
 
    // 큰값인 것을 뒤로(pop_back하기 위해) 
    vector<pair<string, int>> vec(ordered_Map.begin(), ordered_Map.end());
    sort(vec.begin(), vec.end(), cmp);
 
    int iSize = vec.size();
    for (int i = 0; i < iSize; ++i)
    {
        string sMany = vec.back().first;
 
        for (int j = 0; j < 2; ++j)
        {
            // 두 개만 넣는데 한 개일 경우 break
            if (!playMap[sMany].empty())
            {
                answer.push_back(playMap[sMany].begin()->second);
                playMap[sMany].erase(playMap[sMany].begin());
            }
 
            else
                break;
        }
 
        vec.pop_back();
    }
 
    return answer;
}
 

1. 이중 맵이 가능한지도 모르고 맵은 중첩안되는데... 하면서 멀티map도 쓰고... 아주...

2. 횟수가 중첩되는지 모르고 map썻다가 2번 15번 테케 탈... 아...! 하면서 바로 multimap...

어떻게 매일 하는데도 배울게 생겨서... 해도해도 할게 많아~

+ Recent posts