프로그래머스 - 모의고사

phoenixKim·2021년 8월 18일
0

풀이전략

  • 수포자 3명의 규칙성을 찾고, 벡터로 도식화하자

  • 문제랑 수포자 3명의 답안 이랑 비교해야 하므로 2차원 for문 을 사용해야 함.

  • 수포자 3명의 답안이 마지막번 다음에 첫번째로 복귀해 하므로
    이부분을 주의 깊게 생각해보자
    -> 나머지를 이용하면 첫번째 답안으로 복귀 가능하다.

  • 최대값을 찾는 것이므로
    임시 벡터를 만들어서 수포자들의 점수를 넣고, 최대값을 갱신 한 다음에
    최대값과 수포자들의 값을 비교하면서 원래 구하려는 정답의 벡터를 삽입해주자.

소스코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    vector<int> score;
    vector<int> v[3] = {{1,2,3,4,5} , {2,1,2,3,2,4,2,5}
                       , {3,3,1,1,2,2,4,4,5,5}};
    
    
    for(int i = 0; i < 3; i++)
    {
        int size = v[i].size();
        int cnt = 0;
        for(int j = 0; j < answers.size(); j++)
        {
            if(answers[j] == v[i][j % size])
                cnt++;
        }
        
       score.push_back(cnt);
    }
    
    //오름차순...
    int max = -1;
    
    for(int i = 0; i< 3; i++)
    {
        if(max < score[i])
            max = score[i];
   
    }
    
    for(int i = 0; i< 3; i++)
    {
        if(max == score[i])
            answer.push_back(i + 1);
    }
    
    
    return answer;
}

profile
🔥🔥🔥

0개의 댓글

관련 채용 정보