[프로그래머스 Lv1] 모의고사

수민이슈·2023년 3월 30일
0

[C++] 코딩테스트

목록 보기
14/116
post-thumbnail

🖊️ 문제

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

🖊️ 풀이

벡터에 수포자들이 찍는 루틴을 넣어놓고,
루틴이 계속 반복되니까 나머지 연산을 통해 계산해주면 된당.

이렇게 루틴이 있는 경우, 배열에 넣어놓자!

그리고,,

벡터의 최대, 최소 원소 구하기

<algorithm> 라이브러리의
max_element(시작, 끝)!!!
다만,
리턴값이 iterator이므로
값을 구하고 싶으면 *max_element(m, n) 으로 구해야 한당.

🖊️ 코드

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

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    
    vector<vector<int>> pick{{1, 2, 3, 4, 5}, {2, 1, 2, 3, 2, 4, 2, 5}, {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}};
    
    vector<int> cnts{0, 0, 0};
    
    for (int i = 0 ; i < answers.size() ; i++) {
        if (answers[i] == pick[0][i % 5]) cnts[0] += 1;
        if (answers[i] == pick[1][i % 8]) cnts[1] += 1;
        if (answers[i] == pick[2][i % 10]) cnts[2] += 1;
    }
    
    int max = *max_element(cnts.begin(), cnts.end());
    
    for (int i = 0 ; i < 3 ; i++) {
        if (cnts[i] == max) {
            answer.emplace_back(i+1);
        }
    }    
    return answer;
}

0개의 댓글