코테 준비-문제풀기

프로그래머스-모의고사 c++ 완전탐색

FireStone 2020. 5. 7. 23:43

**answer와 answers를 헷갈리지 마시오...이것때문에 10분이면 풀 문제를 30분 넘게 풀었다..

함수 이름도 꼼꼼하게 확인해야겠다

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
   vector<int> answer;
    vector<int> person1{1,2,3,4,5};
    vector<int> person2{2,1,2,3,2,4,2,5};
    vector<int> person3{3,3,1,1,2,2,4,4,5,5};
    int count1=0;
    int count2=0;
    int count3=0;
    //size
    
    
    for(int i=0;i<answers.size();i++){
        int i1=i%5;
        int i2=i%8;
        int i3=i%10;
        if(answers[i]==person1[i1])
            count1++;  
        if(answers[i]==person2[i2])
            count2++;
        if(answers[i]==person3[i3])
            count3++;
    }
    int max2=max(count1,max(count2,count3));
    
    if(count1==max2)
        answer.push_back(1);
    if(count2==max2)
        answer.push_back(2);
    if(count3==max2)
        answer.push_back(3);
    
    return answer;
}

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

참고로 max를 중복해서 찾아냈지만

밑에처럼 *max_element를 사용하면 벡터에 있는 최대값을 바로 찾을 수 있다.

 

int size;

cin >> size;

 

int *arr = new int[size];

for(int i=0; i<size; i++){

cin >> arr[i];

}

cout << "max값: " << *max_element(arr, arr+size) << endl;

cout << "min값: " << *min_element(arr, arr+size) << endl;