코딩 테스트/프로그래머스 코딩테스트
성격 유형 검사하기
ingus kinematics
2022. 9. 25. 23:01
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> survey, vector<int> choices) {
string answer;
const int SCORES[7] = {3, 2, 1, 0, 1, 2, 3};
// R, T
// C, F
// J, M
// A, N
// -> 4 x 2 행렬
map<char, int> m;
m.insert(make_pair('R', 0));
m.insert(make_pair('T', 0));
m.insert(make_pair('C', 0));
m.insert(make_pair('F', 0));
m.insert(make_pair('J', 0));
m.insert(make_pair('M', 0));
m.insert(make_pair('A', 0));
m.insert(make_pair('N', 0));
char ch;
int choiceScore = 0;
for(int i=0; i<survey.size(); i++)
{
choiceScore = choices.at(i) - 1;
// 비동의 -> 첫 번째 유형 선택
if(choices.at(i) >= 1 && choices.at(i) <= 3)
{
ch = survey.at(i).c_str()[0];
m.find(ch)->second += SCORES[choiceScore];
}
// 모르겠음
else if(choices.at(i) == 4)
{
}
// 동의 -> 두 번째 유형 선택
else if(choices.at(i) >= 5 && choices.at(i) <= 7)
{
ch = survey.at(i).c_str()[1];
m.find(ch)->second += SCORES[choiceScore];
}
}
// Print
// for(auto it = m.begin(); it != m.end(); it++){
// cout << "key: " << it->first << " " << "value: " << it->second << '\n';
// }
// R-T
if(m.find('R')->second - m.find('T')->second == 0) answer.push_back('R');
else if(m.find('R')->second > m.find('T')->second) answer.push_back('R');
else if(m.find('R')->second < m.find('T')->second) answer.push_back('T');
// C-F
if(m.find('C')->second - m.find('F')->second == 0) answer.push_back('C');
else if(m.find('C')->second > m.find('F')->second) answer.push_back('C');
else if(m.find('C')->second < m.find('F')->second) answer.push_back('F');
// J-M
if(m.find('J')->second - m.find('M')->second == 0) answer.push_back('J');
else if(m.find('J')->second > m.find('M')->second) answer.push_back('J');
else if(m.find('J')->second < m.find('M')->second) answer.push_back('M');
// A-N
if(m.find('A')->second - m.find('N')->second == 0) answer.push_back('A');
else if(m.find('A')->second > m.find('N')->second) answer.push_back('A');
else if(m.find('A')->second < m.find('N')->second) answer.push_back('N');
return answer;
}