[프로그래머스/C++]Lv.1 - 성격 유형 검사하기

YH J·2023년 5월 19일
0

프로그래머스

목록 보기
88/168

문제 링크

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 문 조건도 더 줄일 수 있다.

profile
게임 개발자 지망생

0개의 댓글