새소식

코딩테스트/프로그래머스

[C++] 성격 유형 검사하기

  • -

[문제]

코딩테스트 연습 - 성격 유형 검사하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제 풀이]

카카오에서 나오는 1단계들은 순서만 제대로 정해서 나눠서 풀면 풀기가 어렵지 않다.

 

1. map을 이용해서 <char, int> 변수 만들기.
2. survey를 반복 방문하면서 해당 index의 choices가 4보다 크다면 survey[i][1]을 choices - 4 값을 더해주고 아니면 survey[i][0]에 4 - choices 값을 더해주자.
3. map에 저장되어 있는 (R,T), (C,F), (J,M), (A,N) 을 비교해서 더 큰 변수 4개를 answer에 넣어주기.

 

나는 위와 같은 3단계로 나누어서 풀었고 마지막에 if else 문을 이용하면 코드가 길어지기에 삼항 연산자를 사용해서 가독성을 올렸다.

[회고]

카카오 1단계는 문제만 잘 보면 어렵지 않다. 실제 코테를 대비해서 문제 보는 연습을 하자.

[코드]

#include <string>
#include <vector>
#include <map>
using namespace std;

string solution(vector<string> survey, vector<int> choices) {
    string answer = "";
    
    map<char, int> types;
    
    //앞은 비동의 뒤는 동의    
    for(int i = 0;i<survey.size();i++){
        //4보다 크다면 뒤에 있는 동의쪽의 타입에 더해주기.
        if(choices[i] > 4){
            types[survey[i][1]] += choices[i] - 4;
        }
        else if(choices[i] < 4){
            types[survey[i][0]] += 4 - choices[i];
        }
    }
    
    //(R,T), (C,F), (J,M), (A,N) 을 비교해서 더 큰 숫자 4개를 answer에 넣어주기.
    answer += (types['R'] >= types['T']) ? "R" : "T";
    answer += (types['C'] >= types['F']) ? "C" : "F";
    answer += (types['J'] >= types['M']) ? "J" : "M";
    answer += (types['A'] >= types['N']) ? "A" : "N";
    
    return answer;
}

 

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[C++] 개인정보 수집 유효기간  (0) 2023.08.15
[Swift] 성격 유형 검사하기  (0) 2023.08.15
[Swift] 신고 결과 받기  (0) 2023.08.14
[C++] 신고 결과 받기  (0) 2023.08.14
[Swift] 과일 장수  (0) 2023.08.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.