어흥
[프로그래머스] 직업군 추천하기 (C++) 본문
728x90
반응형
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/84325
1. 주의할 점
- 차례대로 완벽하게 구현한다
- 우선순위큐와 Map을 활용한다
2. 구현
- Table 벡터에 있는 정보들을 각각 V 벡터와 M[] 맵에 담는다. 맵에 담는 이유는, M[][언어]를 검색했을 때, 보다 빠르게 검색이 되기 때문이다
- 5개의 직업군에 대해 각각의 언어와 선호도를 계산하여 우선순위큐에 넣는다. 이때, 우선순위큐는 총점의 내림차순, 문자열의 사전순으로 정렬한다
#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <sstream>
#include <queue>
#include <algorithm>
using namespace std;
struct info{
string s;
int val;
};
struct cmp{
bool operator()(info &a, info &b){
if(a.val==b.val) return a.s > b.s;
return a.val < b.val;
}
};
map<string,int> m[5];
vector<string> v;
string solution(vector<string> table, vector<string> languages, vector<int> preference) {
string str,answer = "";
priority_queue<info,vector<info>,cmp> pq;
for(int i=0;i<table.size();i++){
istringstream ss(table[i]);
int score=6;
while(getline(ss,str,' ')){
if(score==6) v.push_back(str);
else m[i][str]=score;
score--;
}
}
for(int k=0;k<5;k++){
string job = v[k];
int score = 0;
for(int i=0;i<languages.size();i++){
string ss = languages[i];
score+=(m[k][ss]*preference[i]);
}
pq.push({job,score});
}
return answer = pq.top().s;
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 (C++) (0) | 2021.09.10 |
---|---|
[프로그래머스] 복서 정렬하기 (C++) (0) | 2021.09.10 |
[프로그래머스] 미로 탈출 (C++) (1) | 2021.08.31 |
[프로그래머스] 퍼즐 조각 채우기 (C++) (0) | 2021.08.30 |
[프로그래머스] 상호 평가 (C++) (0) | 2021.08.30 |
Comments