알고리즘(C++) / 프로그래머스 위클리 챌린지 : 4주차 직업군 추천하기

알고리즘(C++) / 프로그래머스 위클리 챌린지 : 4주차 직업군 추천하기

위클리 챌린지 : 4주차 직업군 추천하기

https://programmers.co.kr/learn/courses/30/lessons/84325?language=cpp

코드

//프로그래머스 직업군 추천하기 위클리 챌린지 4주차 #include #include #include #include #include using namespace std; string solution(vector table, vector languages, vector preference) { string answer = ""; map 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 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 languages = { "JAVA", "JAVASCRIPT" }; vector preference = { 7,5 }; cout << solution(table, languages, preference) << "

"; return 0; }

설명

map에 언어의 선호도를 쌍으로 나타낸다.

선호도가 존재한다면 점수를 곱하여 점수 총합을 구한다.

점수 총합이 가장 높고 사전 순으로 먼저 오는 직군을 출력한다.

결과

걸린시간 : 30분

map, stringstream 등 STL을 사용하여 문제를 쉽게 풀 수 있었다.

from http://se-jung-h.tistory.com/152 by ccl(A) rewrite - 2021-08-31 11:00:17