모의고사

NJW·2021년 8월 26일
0

코테

목록 보기
80/170

들어가는 말

세상엔 똑똑한 사람들이 많고 난 왜 엉뚱한 문제로 시간을 날렸나... 하는 문제. 이걸 1시에 잡았는데 자꾸만 에러가 나서 해가 지고 나서야 풀었다. 그런데, 문제는 겁나 사소한 거... ㅠㅠ. 너무 사소해서 눈물이 나... 저번에 second를 first로 넣어줬던 때보다 더 사소하다...
기본적으로 주어진 문제 중 가장 많은 문제를 푼 학생을 반환하는 것이다. 만일 동점자가 있으면 오름차순으로 반환하고.

코드 설명

for을 세 번 풀었으나, 답이 잘 안 나와서 다른 사람들은 어떻게 풀었는지 봤다. v1[i%5]를 해서(나머지가 0부터 4까지 나오니까) 그 값을 비교해주었더라. 대박... 이렇게 똑똑한 생각을 하다니... 저렇게 푸는 걸 아예 생각도 못했기 때문에 더욱 놀랐다. 다음에 비슷한 문제가 나오면 써먹어야지. ㅎㅎ.
다음으로 최대값을 구해주고 만일 이 최대값하고 같은 수가 있다면 답에 넣어준다.
내가 실수한 부부은 바로 이 부분

vector<int> score(3);

나는 저기서 크기를 지정하지 않아 자꾸만 틀렸다.
벡터라 크기를 지정하지 않아도 될 줄 알았건만... 지정해야 하나보다. 이유는 잘 모르겠는데, 뭐... 그렇다니까. 고작 숫자 하나로 이렇게 틀리다니... ㅠㅠ.
처음에는 max_element를 써서 틀린 줄 알았다. 그러나 max_element는 잘못이 없었다.

코드

include <string>
#include <vector>

using namespace std;

int v1[5]={1, 2, 3, 4, 5};
int v2[8]={2, 1, 2, 3, 2, 4, 2, 5};
int v3[10]={3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

int max(int a, int b){
    if(a > b){
        return a;
    }else{
        return b;
    }
}

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    vector<int> score(3);
    int max_score = 0;

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

    max_score = max(max(score[0], score[1]), score[2]);

    for(int i=0; i<3; i++){
        if(max_score == score[i]){
            answer.push_back(i+1);
        }
    }

    return answer;
}

*max_element 쓴 코드

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

using namespace std;

int v1[5]={1, 2, 3, 4, 5};
int v2[8]={2, 1, 2, 3, 2, 4, 2, 5};
int v3[10]={3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    vector<int> score(3);
    int max_score = 0;
    
  for(int i=0; i < answers.size(); i++){
        if(v1[i % 5] == answers[i]){
            score[0]++; 
        }
        if(v2[i % 8] == answers[i]){
            score[1]++;     
        }
        if(v3[i % 10] == answers[i]){
            score[2]++;
        }
    }

    max_score = *max_element(score.begin(), score.end());
    
    for(int i=0; i<3; i++){
        if(max_score == score[i]){
            answer.push_back(i+1);
        }
    }
    
    return answer;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글