프로그래머스 모의고사 C++

2023. 10. 19. 17:41알고리즘

시뮬레이션 문제이다. 

테스트케이스 5, 7번에서 문제가 있었는데 max_val을 처리해주는 부분 (line 32, 33)에서 잘못 짠 부분이 있었다.

 max_val = max(ans1, ans2);
 max_val = max(ans2, ans3);

이런식으로 짰었는데 이렇게 하면 예전 값을 기억하지 못한다는 문제점이 있어서 이렇게 변경했다.

 max_val = max(ans1, ans2);
 max_val = max(max_val, ans3);

 

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

using namespace std;

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> solution(vector<int> answers) {
    vector<int> answer;
    int ans1 = 0, ans2 = 0, ans3 = 0;
    for (int i = 0;i < answers.size();i++) {
        if (answers[i] == p1[i % p1.size()]) {
            ans1++;
        }
    }
    for (int i = 0;i < answers.size();i++) {
        if (answers[i] == p2[i % p2.size()]) {
            ans2++;
        }
    }
    for (int i = 0;i < answers.size();i++) {
        if (answers[i] == p3[i % p3.size()]) {
            ans3++;
        }
    }
    int max_val;

    max_val = max(ans1, ans2);
    max_val = max(max_val, ans3);

    if (ans1 == max_val) {
        answer.push_back(1);
    }
    if (ans2 == max_val) {
        answer.push_back(2);
    }
    if (ans3 == max_val) {
        answer.push_back(3);
    }
    return answer;
}
int main(void) {
    vector<int> answers = { 1, 2, 3, 4, 5 };
    solution(answers);
    return 0;
}