티스토리 뷰
성공 코드(내 코드)
- survey를 탐색하며
- choices가 3이하인 경우에는
- survey의 첫번째 문자에 해당되는 인덱스를 찾아 벡터 st의 원소에 점수를 추가
- choices가 5이상인 경우에는
- survey의 두번째 문자에 해당되는 인덱스를 찾아 벡터 st의 원소에 점수를 추가
- choices가 3이하인 경우에는
- st를 탐색하며
- i=0, 2, 4, 6인 경우
- st[i]과 st[i+1] 중 큰 값을 가지는 원소가 나타내는 문자를 벡터 type를 통해 찾아 answer에 추가한다.
- i=0, 2, 4, 6인 경우
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
vector<int> st(8);
vector<char> type(8);
type[0]='R'; type[1]='T';
type[2]='C'; type[3]='F';
type[4]='J'; type[5]='M';
type[6]='A'; type[7]='N';
for(int i=0; i<survey.size(); i++){
string s=survey[i];
int c=choices[i], idx;
if(c<=3){
idx=find(type.begin(), type.end(), s[0])-type.begin();
st[idx]+=4-c;
} else if(c>=5){
idx=find(type.begin(), type.end(), s[1])-type.begin();
st[idx]+=c-4;
}
}
for(int i=0; i<=6; i+=2){
if(st[i]>st[i+1]){
answer+=type[i];
} else if(st[i]<st[i+1]){
answer+=type[i+1];
} else{
answer+=type[i];
}
}
return answer;
}
다른 사람 풀이
- 위의 방법과 비슷하나
- 벡터 st를 map인 score로
- 벡터 type을 2차원 벡터인 MBTI로 나타냈다.
// 06:50 ~
#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;
}
'알고리즘' 카테고리의 다른 글
[백준 2138번/c++] 전구와 스위치 (0) | 2022.11.09 |
---|---|
[프로그래머스/c++] 구명보트 (0) | 2022.09.29 |
[프로그래머스/c++] 같은 숫자는 싫어 (0) | 2022.08.26 |
[프로그래머스/c++] 신규 아이디 추천 (0) | 2022.08.24 |
[프로그래머스/c++] 숫자 문자열과 영단어 (0) | 2022.08.24 |