프로그래머스/lv1

프로그래머스 : 모의고사(lv1) C++

TIN9 2022. 11. 4.
반응형

프로그래머스 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42840

 

프로그래머스

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

programmers.co.kr


#include <string>
#include <vector>
#include <algorithm>

using namespace std;

// 정답의 반복을 벡터로 구성
vector<int> Person1 = { 1, 2, 3, 4, 5 };
vector<int> Person2 = { 2, 1, 2, 3, 2, 4, 2, 5 };
vector<int> Person3 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };

// 수포자의 정답 개수를 저장
int Result1, Result2, Result3;

vector<int> solution(vector<int> answers) 
{
    vector<int> answer;
    
    // 정답 맞춘 개수를 저장할 벡터
    vector<int> Save;
    
    // Size는 반복문 돌때 고정값이기 때문에 밖에 빼서 반복문에 값을 넣어주는게 좋음
    size_t Size = answers.size();
    
    for(size_t i = 0; i < Size; ++i)
    {
        // 나머지 연산자를 이용해 인덱스값을 구해줌
        // 5 8 10은 수포자가 찍는 방식의 반복 개수
        if(answers[i] == Person1[i % 5])
        {
            ++Result1;
        }
        if(answers[i] == Person2[i % 8])
        {
            ++Result2;
        }
        if(answers[i] == Person3[i % 10])
        {
            ++Result3;
        }
    }
    
    Save.push_back(Result1);
    Save.push_back(Result2);
    Save.push_back(Result3);
    
    // max_element함수를 이용해 최대값을 구해줌
    int Count = *max_element(Save.begin(), Save.end());
    
    for(size_t i = 0; i < Save.size(); ++i)
    {
        // 최대 값이 같다면 answer에 푸쉬해준다 인덱스 + 1값을
        if(Count == Save[i])
        {
            answer.push_back(i + 1);
        }
    }
    
    return answer;
}

반응형

댓글