728x90
위클리 챌린지 : 4주차 직업군 추천하기
https://programmers.co.kr/learn/courses/30/lessons/84325?language=cpp
코딩테스트 연습 - 4주차
개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부
programmers.co.kr
코드
//프로그래머스 직업군 추천하기 위클리 챌린지 4주차
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <sstream>
using namespace std;
string solution(vector<string> table, vector<string> languages, vector<int> preference) {
string answer = "";
map <string, int> prefer;
for (int i = 0; i < languages.size(); i++) {
prefer[languages[i]] = preference[i];
} //선호도
int max_pre = 0; //최대
for (int i = 0; i < table.size(); i++) {
stringstream s(table[i]);
string job;
s >> job; //직군
int pre = 0;
for (int i = 5; i > 0; i--) {
string lang;
s >> lang;
pre += (i * prefer[lang]); //언어 선호도
}
if (max_pre < pre) {
max_pre = pre;
answer = job;
} // 가장 큰 선호도
else if (max_pre == pre) {
if (answer > job)
answer = job;
} // 같을 때 사전순
}
return answer;
}
int main() {
vector <string> table = { "SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JAVASCRIPT C JAVA" };
vector <string> languages = { "JAVA", "JAVASCRIPT" };
vector <int> preference = { 7,5 };
cout << solution(table, languages, preference) << "\n";
return 0;
}
설명
map에 언어의 선호도를 쌍으로 나타낸다.
선호도가 존재한다면 점수를 곱하여 점수 총합을 구한다.
점수 총합이 가장 높고 사전 순으로 먼저 오는 직군을 출력한다.
결과
걸린시간 : 30분
map, stringstream 등 STL을 사용하여 문제를 쉽게 풀 수 있었다.
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
알고리즘(C++) / 프로그래머스 level 2 : 더 맵게 (0) | 2021.09.05 |
---|---|
알고리즘(C++) / 프로그래머스 위클리 챌린지 : 5주차 모음 (0) | 2021.08.31 |
알고리즘(C++) / 프로그래머스 level 2 : 카카오 프렌즈 컬러링북 (0) | 2021.08.31 |
알고리즘(C++) / 프로그래머스 level 2 : 수식 최대화 (0) | 2021.08.29 |
알고리즘(C++) / 프로그래머스 level 2 : 순위 검색 (0) | 2021.08.29 |
댓글