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;
}