티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/42579
코딩테스트 연습 - 베스트앨범 | 프로그래머스
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 play
programmers.co.kr
#include <string>
#include <vector>
#include <map>
#include <utility>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
bool cmpM(const pair<int, string> &a, const pair<int, string> &b) {
return a.first > b.first;
}
bool cmpV(const pair<int, int> &a, const pair<int, int> &b) {
return a.first > b.first;
}
vector<pair<int, string>> mSort(map<string, int> &M) {
vector<pair<int, string>> V;
for (auto i : M)
V.push_back(make_pair(i.second, i.first));
sort(V.begin(), V.end(), greater<int>());
return V;
}
int main(void) {
vector<string> genres;
vector<int> plays;
map<string, int> M;
multimap<string, pair<int, int>> MM;
for (int i = 0; i < 5; i++) {
string str;
int x;
cin >> str >> x;
genres.push_back(str);
plays.push_back(x);
}
for (int i = 0; i < genres.size(); i++) {
M[genres[i]] += plays[i];
MM.insert(make_pair(genres[i], make_pair(plays[i], i)));
}
vector<pair<int, string>> V = mSort(M);
multimap<string, pair<int, int>>::iterator iter;
pair<multimap<string, pair<int, int>>::iterator, multimap<string, pair<int, int>>::iterator> iter_pair;
for (auto i : V) {
vector<pair<int, int>> lastV;
iter_pair = MM.equal_range(i.second);
for (iter = iter_pair.first; iter != iter_pair.second; ++iter) {
lastV.push_back(make_pair(iter->second.first, iter->second.second));
//cout<<iter->first<<' '<<iter->second.first<<' '<<iter->second.second<<endl;
}
if (iter_pair.second - iter_pair.first < 2) {
answer.push_back(lastV[0].second);
}
else {
sort(lastV.begin(), lastV.end(), cmpV);
for (int i = 0; i<2; i++)
answer.push_back(lastV[i].second);
}
}
return 0;
}
'Algorithm > 유형별 : Map' 카테고리의 다른 글
[C++] [Map] 프로그래머스 해시 : 위장 (0) | 2019.11.14 |
---|---|
[C++] [Map] 프로그래머스 해시 : 전화번호 목록 (0) | 2019.11.14 |
[C++] [Map] 프로그래머스 해시 : 완주하지 못한 선수 (0) | 2019.11.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 추상화
- 다형성
- controller
- Oracle
- model
- .
- MVC
- view
- 캡슐화
- JdbcTemplate
- OOP
- JDBC 프로그램 작성단계
- java
- java 환경설정
- Update
- Delete
- 객체지향
- ojdbc6.jar
- 객체
- jdbc
- Scott/Tiger
- select
- INSERT
- 상속
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함