문제
성격유형을 반환하는 문제이다
매우 비동의 ~ 매우 동의 까지 1~7 점수로 주어지는데
1 2 3 4 5 6 7 8 -> 3 2 1 0 1 2 3 으로 반환해서 계산해주어야한다.
같은 지표라도 동의와 비동의는 달라질 수 있다. 동의 : R , 비동의 T <-> 동의 : T , 비동의 : R
-> 입력 순서에 따라 판단한다.
풀이
for 문을 돌면서 각 질문에 대해 답을 가지고 성격 유형에 점수를 더한다. 1~7로 점수가 주어지기 때문에 점수를 반환해서 더한다. 동의, 비동의 순서가 질문마다 다르게 주어질 수 있기 때문에 "abc[survey[i][0]-'A']" 이런식으로 해당하는 알파벳에 더한다.
각 자리마다 더 많이 나온 성격유형을 선택한다. 똑같으면 사전순으로 한다. 출력한다.
#include <string>
#include <vector>
using namespace std;
// 3210123
//비동의, 동의
//123 앞에 점수 ,456이면 뒤에 점수
//map char
int abc[26];
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
for(int i=0;i<survey.size();i++){
if(choices[i]<4)
abc[survey[i][0]-'A']+= 4 - choices[i];
else if(choices[i]>4)
abc[survey[i][1]-'A']+=choices[i]-4;
}
if(abc['R'-'A']>=abc['T'-'A'])
answer+='R';
else
answer+='T';
if(abc['C'-'A']>=abc['F'-'A'])
answer+='C';
else
answer+='F';
if(abc['J'-'A']>=abc['M'-'A'])
answer+='J';
else
answer+='M';
if(abc['A'-'A']>=abc['N'-'A'])
answer+='A';
else
answer+='N';
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 대충 만든 자판 c++ (0) | 2023.09.26 |
---|---|
[프로그래머스] 소수 만들기 c++ (0) | 2023.09.26 |
[프로그래머스] 이진 변환 반복하기 c++ (0) | 2023.05.14 |
[프로그래머스] 수식 최대화 c++ (0) | 2023.04.16 |
[프로그래머스] 배달 c++ (0) | 2023.04.01 |