나만의 작은 도서관
문제 118666. 성격 유형 검사하기 본문
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/118666
난이도 : Lv.1
문제 요약 설명
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.
지표 번호 | 성격 유형 |
1번 지표 | 라이언형(R), 튜브형(T) |
2번 지표 | 콘형(C), 프로도형(F) |
3번 지표 | 제이지형(J), 무지형(M) |
4번 지표 | 어피치형(A), 네오형(N) |
각 질문지에는 총 7가지 선택지가 존재하며 "XY" 질문지는 다음과 같이 X또는 Y유형의 점수를 얻습니다. (여기서 X, Y는 R, T, C, F, J, M, A, N 총 8개 중 하나)
선택지 | 성격 유형 점수 |
매우 비동의 | X유형 +3점 |
비동의 | X 형 +2점 |
약간 비동의 | X 형 +1점 |
모르겠음 | X, Y전부 추가 점수 없음(0점) |
약간 동의 | Y형 +1점 |
동의 | Y형 +2점 |
매우 동의 | Y형 +3점 |
검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 하도록 solution 함수를 완성해주세요.(단, 각 성격 유형 점수가 같은 경우 사전 순으로 빠른 성격 유형을 선택합니다. ex. C: 10점, F: 10점 -> C선택)
입력
- 질문마다 판단하는 지표를 담은 1차원 문자열 배열 survey
- 각 질문마다 선택한 선택지를 담은 1차원 정수 배열 choices
입력 제한
- 1 ≤ survey의 길이 ( = n) ≤ 1,000
- 1 ≤ choices의 원소 ≤ 7
입력 예제
// input
["AN", "CF", "MJ", "RT", "NA"] // survey
[5, 3, 2, 7, 5] // choices
// ans
"TCMA"
풀이 방식
map 자료구조를 이용해 survey에 저장된 각 설문지를 순회하며 각 유형의 점수를 계산한다. map은 다음과 같이 저장된다.
map: {A: 1, N: 4, C: 2, ... T: 5}
(참고로, map 자료구조는 value타입을 int로 지정했을 때, 할당하지 않은 key값의 value들은 0을 기본값으로 가지고 있다. 따라서 한 번도 설문지에 나오지 않은 유형도 쉽게 점수를 대소비교 할 수가 있다. undeclared와 같은 오류가 안 뜨니 너무나도 편하다!)
순회가 끝났다면, 1번 지표부터 차례대로 4번 지표까지 점수가 높은 유형을 얻어 answer에 붙이고, answer를 결과로 반환한다.
정답 코드
더보기
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
map<char, int> m;
for(int i = 0; i < choices.size(); i++){
if(choices[i] < 4){
m[survey[i][0]] += 4 - choices[i];
}
else{
m[survey[i][1]] += -(4 - choices[i]);
}
}
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';
return answer;
}
'프로그래머스 문제풀이 > 코드카타' 카테고리의 다른 글
문제 150370. 개인정보 수집 유효기간 (0) | 2024.06.24 |
---|---|
문제 161990. 바탕화면 정리 (0) | 2024.06.23 |
문제 133502. 햄버거 만들기 (0) | 2024.06.21 |
문제 155652. 둘만의 암호 (0) | 2024.06.20 |
문제 160586. 대충 만든 자판 (0) | 2024.06.19 |