https://school.programmers.co.kr/learn/courses/30/lessons/118666
map<char,int> 컨테이너를 만든 뒤 choice와 survey에 따라 알파벳key값에 점수value를 계산해준다.
계산된 점수를 기반으로 유형을 정해준다.
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
string s = "RTCFJMAN";
map<char,int> point;
for(int i = 0; i < survey.size(); i++)
{
switch(choices[i])
{
case 1:
point[survey[i][0]] += 3;
break;
case 2:
point[survey[i][0]] += 2;
break;
case 3:
point[survey[i][0]] += 1;
break;
case 5:
point[survey[i][1]] += 1;
break;
case 6:
point[survey[i][1]] += 2;
break;
case 7:
point[survey[i][1]] += 3;
break;
}
}
for(int i = 0; i < 7; i+=2)
{
if(point[s[i]] > point[s[i+1]])
answer += s[i];
else if(point[s[i]] < point[s[i+1]])
answer += s[i+1];
else
answer += s[i];
}
return answer;
}
#include <string>
#include <vector>
#include <map>
using namespace std;
char MBTI[4][2] = {
{'R','T'},
{'C','F'},
{'J','M'},
{'A','N'}
};
string solution(vector<string> survey, vector<int> choices) {
string ans = "";
map<char,int> score;
for(int i = 0; i < survey.size(); ++i){
if(choices[i] < 4){
score[survey[i][0]] += (4 - choices[i]);
} else{
score[survey[i][1]] += (choices[i] - 4);
}
}
for(int i = 0; i < 4; ++i){
if(score[MBTI[i][0]] >= score[MBTI[i][1]]) ans += MBTI[i][0];
else ans += MBTI[i][1];
}
return ans;
}
choices값을 계산해서 넣어줄 때 4를 기준으로 간단하게 계산해줌
for 문 조건도 더 줄일 수 있다.