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

 

프로그래머스

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

programmers.co.kr

문제에 제시된 제한 사항
입출력 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
vector<int> solution(vector<int> answers) {
    vector<int> answer;
    int answers_sz = answers.size();
    int max;
    vector<int> p1 = { 1,2,3,4,5 };
    vector<int> p2 = { 2,1,2,3,2,4,2,5 };
    vector<int> p3 = { 3,3,1,1,2,2,4,4,5,5 };
 
    vector<int> p_num(3,0);
    //반복문을 통해 수포자 3명 패턴에 따른 개별 채점
    for (int i = 0; i < answers_sz; i++) {
        if (p1[i % 5== answers[i]) p_num[0]++;
        if (p2[i % 8== answers[i]) p_num[1]++;
        if (p3[i % 10== answers[i]) p_num[2]++;
    } 
    
    max = *max_element(p_num.begin(), p_num.end());
    for (int i = 0; i < 3; i++) {
        if (p_num[i] == max) answer.push_back(i+1);
    }
 
    return answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

수포자마다 반복되는 패턴을 vector로 각자 만들어 answers와 비교해 각자 정답수를 체크해주면 되는 쉬운 문항

마지막에 최대값인 max와 같은 인덱스 번호에 + 1 하여(수포자가 1, 2, 3 이기 때문) answer 벡터에 넣어 반환해주면 된다

 

반응형

'알고리즘(C++) > 프로그래머스 level1' 카테고리의 다른 글

문자열 내 마음대로 정렬하기  (0) 2020.04.01
나누어 떨어지는 숫자 배열  (0) 2020.03.30
가운데 글자 가져오기  (0) 2020.03.30
K번째수  (0) 2020.03.30
완주하지 못한 선수  (0) 2020.03.30

+ Recent posts