프로그래머스 - 성격 유형 검사하기
프로그래머스 문제 링크
survey: 문제의 성격 지표
choices: 문제 응답
choices의 i번째 원소는 1(매우 비동의) ~ 7(매우 동의) 중 하나이다.
1~3은 survey i번째 원소의 첫번째 성격 유형에 해당하는 응답이고 5~6은 두번째 성격 유형에 해당하는 응답이다. 4는 어느 유형에도 점수를 추가하지 않는다.
매우 비동의나 매우 동의인 응답은 3점, 비동의나 동의는 2점, 약간 비동의나 약간 동의는 1점을 추가한다.
각 지표 중 점수가 높은 성격유형을 출력한다. 만약 점수가 같다면 사전 순으로 빠른 성격 유형을 고른다.
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
unordered_map<char, int> mbti = {{'R', 0}, {'T', 0},
{'C', 0}, {'F', 0},
{'J', 0}, {'M', 0},
{'A', 0}, {'N', 0}};
for(int i = 0; i < choices.size(); i++)
{
if (choices[i] < 4)
{
mbti[survey[i][0]] += 4 - choices[i];
}
else if (choices[i] > 4)
{
mbti[survey[i][1]] += choices[i] - 4;
}
}
if(mbti['R'] >= mbti['T']) answer += 'R';
else answer += 'T';
if(mbti['C'] >= mbti['F']) answer += 'C';
else answer += 'F';
if(mbti['J'] >= mbti['M']) answer += 'J';
else answer += 'M';
if(mbti['A'] >= mbti['N']) answer += 'A';
else answer += 'N';
return answer;
}
choices에 따라 survey의 지표를 키 값으로 점수를 추가했다.