250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)위클리 챌린지 4주차 본문
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/84325
맵을 활용한 문제 풀이.
우선 table에 있는 문자열을 모두 토크 나이징 한다.
토크 나이징 한 값을 v 벡터에 저장하고, 해당 직군에 따른 언어 점수를 lang 맵에 저장하도록 한다.
5점 ~ 1점 순서로, v 벡터 안에 있는 언어를 key, 점수를 value로 lang에 저장.
lang 맵을 다시 jobs 맵에 저장하는데, key는 v[0]에 해당하는 직군, value는 lang으로 지정한다.
토크 나이징이 끝나면 이제 가장 높은 점수를 찾으면 된다.
jobs 맵을 순회 하면서 개발자의 언어에 따른 점수를 구하여 최댓값을 찾는다.
최댓값이 갱신될 때마다 정답 직군도 함께 갱신해준다.
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <map>
using namespace std;
string solution(vector<string> table, vector<string> languages, vector<int> preference) {
string answer = "";
map<string, map<string, int>> jobs;
int max = 0;
for(int i = 0; i < 5; i++){
string token;
string job;
stringstream ss(table[i]);
vector<string> v;
map<string, int> lang;
while(ss >> token){
v.push_back(token);
}
job = v[0];
for(int j = 1; j < 6; j++){
lang[v[j]] = 6 - j;
}
jobs[job] = lang;
}
for(auto itr = jobs.begin(); itr != jobs.end(); itr++){
string job = itr->first;
int score = 0;
for(int i = 0; i < languages.size(); i++){
score += itr->second[languages[i]] * preference[i];
}
if(max < score){
max = score;
answer = job;
}
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > Weekly Challenge' 카테고리의 다른 글
(프로그래머스 JS)위클리 챌린지 6주차 (0) | 2021.09.07 |
---|---|
(프로그래머스 c++)위클리 챌린지 6주차 (0) | 2021.09.07 |
(프로그래머스 JS)위클리 챌린지 5주차 (0) | 2021.09.02 |
(프로그래머스 JS)위클리 챌린지 1주차 (0) | 2021.08.19 |
(프로그래머스 JS)위클리 챌린지 2주차 (0) | 2021.08.19 |