바야바네 움집

[Level1] 모의고사 본문

🧶 알고리즘/🎲프로그래머스Programmers

[Level1] 모의고사

친절한 바야바 2021. 11. 19. 22:28

📌문제

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

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

 

📌풀이

그냥 for문으로 다 탐색했다. 비교 대상인 수포자들의 답안이 미리 공개되어 있어서 편했음.

 

 

📌코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;

    vector<int> first = {1, 2, 3, 4, 5};
    vector<int> second = {2, 1, 2, 3, 2, 4, 2, 5};
    vector<int> third = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

    vector<int> score = {0, 0, 0};

    for(int i=0; i<answers.size(); i++)
    {
        if(answers[i] == first[i % 5]) score[0]++;
        if(answers[i] == second[i % 8]) score[1]++;
        if(answers[i] == third[i % 10]) score[2]++;
    }

    if(score[0] >= score[1] && score[0] >= score[2]) answer.push_back(1);
    if(score[1] >= score[0] && score[1] >= score[2]) answer.push_back(2);
    if(score[2] >= score[0] && score[2] >= score[1]) answer.push_back(3);

    return answer;
}

값 비교 후 answer에 넣게 되는 코드 세 줄은

    int they_max = *max_element(they.begin(),they.end());
    for(int i = 0; i<3; i++) {
        if(they[i] == they_max) answer.push_back(i+1);
    }

이런식으로도 바꿀 수 있는 것 같다. 하지만 algorithm 헤더를 추가해야함.

'🧶 알고리즘 > 🎲프로그래머스Programmers' 카테고리의 다른 글

[Level1] 예산  (0) 2021.11.20
[프로그래머스] 위장  (0) 2021.11.17
[프로그래머스] 전화번호 목록  (0) 2021.11.17
Comments