반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
풀이 및 코드
이 문제를 사용할때 저는 map을 이용하여 문제를 풀이하였습니다.
map을 사용하여 그것에 대해서 score에 대해서 ++을 진행해줍니다.
choices의 점수에서 -4를 진행하여 그것에 대해서
음수라면 survey[i][0]에 대한 map의 점수 ++
양수라면 survey[i][1]에 대한 map의 점수 ++을 진행한 후 마지막에 비교 연산을 통해 진행
(단, 사전순이니 RCJA가 값이 같다면 우선순위)
/*
성격 유형 검사하기
유형이 4개가 있음 총 16개가 나옴 AN,CF,MJ,RT등 4세트 로 나오게 되는거
음 갱신을 해야하는건데 이럴때 map을 쓰면 항상 제격이라고 느낀단 말이지
*/
#include <string>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
map<char,int> scoreMap{
{'R',0},{'C',0},{'J',0},{'A',0},
{'T',0},{'F',0},{'M',0},{'N',0}
};
for(int i = 0; i < survey.size();i++){
int score = choices[i] - 4;
if(score < 0){
scoreMap[survey[i][0]] += abs(score);
}else if (score > 0){
scoreMap[survey[i][1]] += score;
}
}
// >=의 이유는 사전순이므로
answer += scoreMap['R'] >= scoreMap['T'] ? 'R' : 'T';
answer += scoreMap['C'] >= scoreMap['F'] ? 'C' : 'F';
answer += scoreMap['J'] >= scoreMap['M'] ? 'J' : 'M';
answer += scoreMap['A'] >= scoreMap['N'] ? 'A' : 'N';
return answer;
}
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스 최고의 집합] c++ (풀이 ,코드) (0) | 2023.06.22 |
---|---|
[프로그래머스 이중우선순위큐] c++ (풀이, 코드) (0) | 2023.06.22 |
[프로그래머스 신규 아이디 추천] c++ (풀이,코드) (0) | 2023.06.22 |
[프로그래머스 달리기 경주] c++ (풀이, 코드) (0) | 2023.06.21 |
[프로그래머스 공원 산책] c++ (풀이,코드) (0) | 2023.06.19 |
댓글