-
[프로그래머스/해시/Lv.3] 베스트앨범프로그래머스/해시 2020. 6. 25. 21:31
문제 설명
코드
#include <string> #include <vector> #include <algorithm> #include <map> #include <unordered_map> using namespace std; bool f(pair<int,int> a, pair<int,int> b){ return a.first>b.first; } vector solution(vector genres, vector plays) { vector answer; unordered_map<string,int> map1; for(int i=0;i<genres.size();i++){ map1[genres[i]]+=plays[i]; } map<int,string,greater> map2; for(unordered_map<string, int>::iterator i=map1.begin();i!=map1.end();i++){ map2.insert(make_pair(i->second,i->first)); } for(map<int, string>::iterator i=map2.begin();i!=map2.end();i++){ vector<pair<int,int>> temp; for(int j=0;j<genres.size();j++){ if(genres[j] == i->second){ temp.push_back(make_pair(plays[j],j)); } } sort(temp.begin(),temp.end(),f); answer.push_back(temp[0].second); if(temp.size()>1) answer.push_back(temp[1].second); } return answer; }
소감
역시 레벨 3부터는 구조를 생각해가며 풀어야 하는 것 같다.
헷갈려서 머리 부서지는 줄 알았다.
처음 써보는 iterator형때문에 한번, 오름차순 정렬에 한번 고생했다.
그래도 얻어가는 건 많다.
'프로그래머스 > 해시' 카테고리의 다른 글
[프로그래머스/해시/Lv.2] 위장 (0) 2020.06.25 [프로그래머스/해시/Lv.2] 전화번호 목록 (0) 2020.06.25 [프로그래머스/해시/Lv.1] 완주하지 못한 선수 (0) 2020.06.25