No Rules Rules

모의고사 (feat. 프로그래머스, 42840번) 본문

생활/코테

모의고사 (feat. 프로그래머스, 42840번)

개발하는 완두콩 2022. 7. 23. 20:41
728x90
반응형

모의고사
https://programmers.co.kr/learn/courses/30/lessons/42840

 

프로그래머스

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

programmers.co.kr

반응형
// woohyeon.kim
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#define _countof(a)            (sizeof(a) / sizeof(a[0]))

using namespace std;

inline bool comp(const pair<int,int>& a, const pair<int,int>& b) {
	if (a.second == b.second)
        return a.first < b.first;
	return a.second > b.second;
}

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    int person1[] = {1,2,3,4,5};
    int person2[] = {2,1,2,3,2,4,2,5};
    int person3[] = {3,3,1,1,2,2,4,4,5,5};
    auto N = answers.size();
    vector<int> person1_answer, person2_answer, person3_answer;
    while(person1_answer.size() < N)
        person1_answer.insert(person1_answer.end(), person1, person1 + _countof(person1));
    while(person2_answer.size() < N)
        person2_answer.insert(person2_answer.end(), person2, person2 + _countof(person2));
    while(person3_answer.size() < N)
        person3_answer.insert(person3_answer.end(), person3, person3 + _countof(person3));
    map<int, int> answer_count;
    for(auto idx = 0; idx < N; ++idx)
    {
        if(answers[idx] == person1_answer[idx])
            ++answer_count[1];
        if(answers[idx] == person2_answer[idx])
            ++answer_count[2];
        if(answers[idx] == person3_answer[idx])
            ++answer_count[3];
    }
    vector<pair<int,int>> tmpl(answer_count.begin(), answer_count.end());
    sort(tmpl.begin(), tmpl.end(), comp);
    if(tmpl.size() == 1)
    {
        answer.push_back(tmpl[0].first);
    }
    else
    {
        answer.push_back(tmpl[0].first);
        for(auto idx = 0; idx < (tmpl.size() - 1); ++idx)
        {
            if(tmpl[idx].second == tmpl[idx + 1].second)
                answer.push_back(tmpl[idx + 1].first);
            else
                break;
        }
    }
    return answer;
}
// *&)*@*

map의 value를 오름차순으로 sort했을때 1~3번에 해당되는 key를 answer에 삽입하였습니다.

혹시 5~12번까지 실패로 결과가 나온다면

아래의 값을 테스트케이스에 넣어보시고 확인해보시기 바랍니다.

[3, 3, 2, 1, 5] -> [3]

[5, 5, 4, 2, 3] -> [1,2,3]

728x90
반응형
Comments