반응형
이전 포스트의 파이썬 코드에 이어
프로그래머스 성격 유형 검사하기를 C++로 풀어보겠다.
2022년 카카오 인턴 코딩 테스트 출제로 아직 프로그래머스에선 푼 사람이 많지 않다.
문제
레벨 1치고 문제가 좀 길다. 하지만 간단하다.
survey에 성격 유형 지표들이 들어있고
choices에 따라 survey의 유형에 값을 더해주고
4개의 분류에서 각각 값이 높은 지표를 리턴하면 된다.
구현
survey와 choices의 개수가 같기 때문에
이 사이즈만큼 반복을 하고
map에 survey의 지표 중에 choices에 따라 선택하여 값을 더해준다.
그 후 map의 값을 비교하여 성격 유형 값에 추가해주고
성격유형을 리턴한다.
문제만 길지 간단한 문제라고 생각한다.
코드
#include <string>
#include <vector>
#include <map>
using namespace std;
int score[8] = {0, 3, 2, 1, 0, 1, 2, 3};
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
map<char, int> surv_elm;
for(int i =0; i<survey.size(); i++)
surv_elm[survey[i][choices[i]/4]] += score[choices[i]];
answer += surv_elm['R'] >= surv_elm['T'] ? "R" : "T";
answer += surv_elm['C'] >= surv_elm['F'] ? "C" : "F";
answer += surv_elm['J'] >= surv_elm['M'] ? "J" : "M";
answer += surv_elm['A'] >= surv_elm['N'] ? "A" : "N";
return answer;
}
약간의 트릭은 choices[i] /4 부분인데
index 4까지는 앞의 값, 그 이후는 뒤의 값을 보도록 한 것이다.
c/c++에서는 int / int 값이 int 이므로 따로 처리할 것이 없다.
나머지는 쉽게 이해할 수 있다.
다른 풀이
아직 신상문제라 그런지 좋은 코드가 보이지 않는다.
혹시 좋은 방법이 있다면 댓글로 알려주시면 감사하겠습니다.
반응형
'Coding Test > C++' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기 C++ Code (0) | 2022.08.23 |
---|---|
[프로그래머스] 2016년 C++ Code (0) | 2022.08.20 |
[프로그래머스] 약수의 개수와 덧셈 C++ Code (0) | 2022.08.17 |
[프로그래머스] K번째수 C++ Code (2) | 2022.08.16 |
[프로그래머스] 체육복 C++ Code (0) | 2022.08.10 |
댓글