본문 바로가기

CS/알고리즘

[c++][프로그래머스] 성격 유형 검사하기_카카오 2022 인턴십 기출

LV.1치고 문제 설명이 길었다

이해는 다했는데 map 사용이 미숙해서 틀린 문제

 

정답 풀이

https://tnwlswkd.tistory.com/126

 

[프로그래머스] 성격 유형 검사하기 (C++)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술

tnwlswkd.tistory.com

 

이 분 코드가 가장 깔끔해서 공부해봤다

map 사용 방법 및 ? 사용법에 대해서도 다시 생각해볼 수 있었던 문제

 

한두시간을 고민고민했는데 아직 풀 수 없었다

복습하다보면 될거라 믿는다...

LV.1인데 제대로 안 풀려서 속상

 

또 LV.1 더 풀러 간다

백준 실버는 좀 익숙해지려 하는데 여전히 갈 길이 머네

 


내 풀이_ 컴파일 에러

 

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string solution(vector<string> survey, vector<int> choices) {
    string answer = "";
    
    vector<pair<char,int>> surveyScore;
    
    for(int i = 0; i < choices.size(); i++) { 
        string a= survey[i].substr(0,1);
        string b=survey[i].substr(1,1);

        
        if (choices[i]==1){
            surveyScore.push_back(make_pair(first,3));   
        }
        else if (choices[i]==2){
            surveyScore.push_back(make_pair(first,2));  
        }else if (choices[i]==3){
            surveyScore.push_back(make_pair(first,1));    
        }else if (choices[i]==4){
            surveyScore.push_back(make_pair(first,0));    
        } else if (choices[i]==5){
            surveyScore.push_back(make_pair(second,1));    
        }else if (choices[i]==6){
            surveyScore.push_back(make_pair(second,2));    
        } else if (choices[i]==7){
            surveyScore.push_back(make_pair(second,3));    
        }      
    }
    
    int rScore, tScore, cScore, fScore, jScore,mScore, aSCore, nScore;
    
    for(int i = 0; i < surveyScore.size(); i++) {
        if (surveyScore[i].first=='R')
        {
            rScore+= surveyScore[i].second;
        }
        else if (surveyScore[i].first=='T')
        {
            tScore+= surveyScore[i].second;
        }
        else  if (surveyScore[i].first=='C')
        {
            cScore+= surveyScore[i].second;
        }
        else if (surveyScore[i].first=='F')
        {
            fScore+= surveyScore[i].second;
        }
        else if (surveyScore[i].first=='J')
        {
            jScore+= surveyScore[i].second;
        }
        if (surveyScore[i].first=='M')
        {
            mScore+= surveyScore[i].second;
        }
        if (surveyScore[i].first=='A')
        {
            aScore+= surveyScore[i].second;
        }
        if (surveyScore[i].first=='N')
        {
            nScore+= surveyScore[i].second;
        }
    
    }
    
    if (rScore>tScore){
        char rT='R';
    }
    else{
        char rT='T';
    }
    if (cScore>fScore){
        char cf='C';
    }
    else{
        char cf='F';
    }
    if (jScore>mScore){
        char jm='J';
    }
    else{
        char jm='M';
    }
    if (aScore>nScore){
        char an='A';
    }
    else{
        char an='N';
    }
    
    answer= rt+cf+jm+an;
    
    return answer;
}

? 안쓰고 이 난리 치다 틀렸다

아래 처럼 풀었어야 하는데

 

핵심

  answer += m['R'] >= m['T'] ? "R" : "T";
  answer += m['C'] >= m['F'] ? "C" : "F";
  answer += m['J'] >= m['M'] ? "J" : "M";
  answer += m['A'] >= m['N'] ? "A" : "N";