Posts [알고리즘] 프로그래머스 - 모의고사
Post
Cancel

[알고리즘] 프로그래머스 - 모의고사


문제

모의고사


접근

1,2,3번 수포자의 반복되는 패턴을 미리 저장해둔다.
1번 = {1,2,3,4,5}
2번 = {2,1,2,3,2,4,2,5}
3번 = {3,3,1,1,2,2,4,4,5,5}

그 후 answers의 원소들과 각 수포자의 답과 비교하여 맞은 개수를 카운팅해주면 된다.

코드

  • C++ 코드
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
29
#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    vector<vector<int>> sol ={ {1,2,3,4,5},
                               {2,1,2,3,2,4,2,5},
                               {3,3,1,1,2,2,4,4,5,5} };
    int score[3] = {0,0,0};
    for(int i = 0; i< answers.size(); i++){
        for(int j = 0; j<3; j++){
            if(sol[j][i%sol[j].size()] == answers[i])
                score[j]++;
        }
    }
    int max = -1;
    for(int i = 0; i<3;i++){
        if(score[i] > max){
            answer.clear();
            answer.push_back(i+1);
            max = score[i];
        }
        else if(score[i] == max){
            answer.push_back(i+1);
        }
    }
    return answer;
}
  • 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(answers):
    sol = [[1,2,3,4,5],
            [2,1,2,3,2,4,2,5],
            [3,3,1,1,2,2,4,4,5,5]]
    score = [0,0,0]
    for i, answer in enumerate(answers):
        for j in range(3):
            if sol[j][i%len(sol[j])] == answer:
                score[j] += 1
    answer = []
    maxValue = max(score)
    for j in range(3):
        if score[j] == maxValue:
            answer.append(j+1)
    return answer


This post is licensed under CC BY 4.0 by the author.

[프로그래머스 인공지능스쿨] Week2-2 인공지능 수학 : 미적분

[프로그래머스 인공지능스쿨] Week2-3 인공지능 수학 : 자료의 정리