class : Design Code
[프로그래머스][C++] 2022 kakao intership : 성격 유형 검사하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) first try : 단순 array로 문제 해결. 보완 필요.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int scoreArr[2][4];
int choiceScore(int num){
if(num==1 || num ==7)
return 3;
else if (num==2 || num ==6)
return 2;
else if (num==3 || num ==5)
return 1;
else
return 0;
}
void wordFunc(string word, int plusScore){
if (word=="R")
scoreArr[0][0]+=plusScore;
else if(word=="C")
scoreArr[0][1]+=plusScore;
else if(word=="J")
scoreArr[0][2]+=plusScore;
else if(word=="A")
scoreArr[0][3]+=plusScore;
else if(word=="T")
scoreArr[1][0]+=plusScore;
else if(word=="F")
scoreArr[1][1]+=plusScore;
else if(word=="M")
scoreArr[1][2]+=plusScore;
else if(word=="N")
scoreArr[1][3]+=plusScore;
return;
}
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
string word = "";
int plusScore=0;
int index = choices.size();
for(int i=0;i<index;i++){
if(choices[i]>4){
word=survey[i][1];
}
else if(choices[i]<4){
word=survey[i][0];
}
else continue;
plusScore=choiceScore(choices[i]);
wordFunc(word,plusScore);
}
if(scoreArr[0][0]>=scoreArr[1][0]){
answer+='R';
}
else answer+='T';
if(scoreArr[0][1]>=scoreArr[1][1]){
answer+='C';
}
else answer+='F';
if(scoreArr[0][2]>=scoreArr[1][2]){
answer+='J';
}
else answer+='M';
if(scoreArr[0][3]>=scoreArr[1][3]){
answer+='A';
}
else answer+='N';
return answer;
}
테스트 1 〉 | 통과 (0.02ms, 4.2MB) |
테스트 2 〉 | 통과 (0.01ms, 4.21MB) |
테스트 3 〉 | 통과 (0.02ms, 3.68MB) |
테스트 4 〉 | 통과 (0.01ms, 4.22MB) |
테스트 5 〉 | 통과 (0.01ms, 4.21MB) |
테스트 6 〉 | 통과 (0.02ms, 4.22MB) |
테스트 7 〉 | 통과 (0.01ms, 3.7MB) |
테스트 8 〉 | 통과 (0.01ms, 3.63MB) |
테스트 9 〉 | 통과 (0.02ms, 4.16MB) |
테스트 10 〉 | 통과 (0.02ms, 3.74MB) |
테스트 11 〉 | 통과 (0.02ms, 3.68MB) |
테스트 12 〉 | 통과 (0.03ms, 4.21MB) |
테스트 13 〉 | 통과 (0.07ms, 4.14MB) |
테스트 14 〉 | 통과 (0.10ms, 3.68MB) |
테스트 15 〉 | 통과 (0.08ms, 4.16MB) |
테스트 16 〉 | 통과 (0.08ms, 4.14MB) |
테스트 17 〉 | 통과 (0.09ms, 3.82MB) |
테스트 18 〉 | 통과 (0.09ms, 4.13MB) |
테스트 19 〉 | 통과 (0.09ms, 4.21MB) |
테스트 20 〉 | 통과 (0.09ms, 4.2MB) |
2)second try : map 사용 -> 속도와 메모리 모두 향상됨
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
map<char, int> scoreMap;
string solution(vector<string> survey, vector<int> choices) {
string answer = "";
int size=survey.size();
int plusScore;
for (int i = 0; i < size; i++) {
plusScore=abs(4-choices[i]);
if (choices[i] < 4) {
scoreMap[survey[i][0]] +=plusScore ;
} else {
scoreMap[survey[i][1]] +=plusScore;
}
}
/*
for (auto iter = scoreMap.begin() ; iter != scoreMap.end(); iter++){
cout << iter->first << " " << iter->second << endl;
}*/
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;
}
테스트 1 〉 | 통과 (0.02ms, 4.21MB) |
테스트 2 〉 | 통과 (0.01ms, 4.21MB) |
테스트 3 〉 | 통과 (0.01ms, 4.15MB) |
테스트 4 〉 | 통과 (0.01ms, 4.14MB) |
테스트 5 〉 | 통과 (0.01ms, 4.04MB) |
테스트 6 〉 | 통과 (0.01ms, 4.21MB) |
테스트 7 〉 | 통과 (0.02ms, 3.63MB) |
테스트 8 〉 | 통과 (0.01ms, 4.03MB) |
테스트 9 〉 | 통과 (0.01ms, 4.21MB) |
테스트 10 〉 | 통과 (0.02ms, 4.21MB) |
테스트 11 〉 | 통과 (0.01ms, 4.21MB) |
테스트 12 〉 | 통과 (0.03ms, 3.75MB) |
테스트 13 〉 | 통과 (0.03ms, 4.03MB) |
테스트 14 〉 | 통과 (0.04ms, 3.64MB) |
테스트 15 〉 | 통과 (0.05ms, 4.04MB) |
테스트 16 〉 | 통과 (0.05ms, 3.82MB) |
테스트 17 〉 | 통과 (0.05ms, 4.15MB) |
테스트 18 〉 | 통과 (0.05ms, 4.14MB) |
테스트 19 〉 | 통과 (0.05ms, 3.76MB) |
테스트 20 〉 | 통과 (0.06ms, 4.15MB) |
'C++ > CodingTest' 카테고리의 다른 글
[프로그래머스][C++] 해시 : 완주하지 못한 선수 (0) | 2023.03.12 |
---|---|
[프로그래머스][C++] 2021 카카오 채용연계형 인턴십 : 숫자 문자열과 영단어 (0) | 2023.03.07 |
[프로그래머스][C++] 2019 KAKAO BLIND RECRUITMENT : 실패율 (0) | 2023.03.06 |