🍞 Problem Solving/Programmers

[프로그래머스][Level1] 로또의 최고 순위와 최저 순위 c++

박빵이 2022. 9. 3. 13:46

풀이과정

일단 lottos와 win_nums가 일치하는 개수를 세고, lottos의 0 개수를 센다.

최고로 일치하는 것은 번호가 일치하는 개수와 모르는 번호인 0의 개수의 합이다.  
최저로 일치하는 것은 번호가 일치하는 개수만이다.

최고 순위는 7에서 최고로 일치하는 횟수를 빼주면 되고,  
최저 순위는 7에서 최저로 일치하는 횟수를 빼주면 되는데

여기서 조건을 잘 걸어야 한다.  
로또 맞는 번호가 하나도 없다면 최고 순위와 최저 순위는 둘 다 6이 된다.  
더하여 로또 맞는 번호가 1개라도 최저 순위는 6이 되므로  
if else 조건문을 잘 적어줘야 한다.

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int cnt = 0;
    for(int i = 0; i < lottos.size(); i++){
        for(int j = 0; j < win_nums.size(); j++){
            if(lottos[i] == win_nums[j]) cnt++;
        }
    }
    int cnt0 = 0;
    for(int i = 0; i < lottos.size(); i++){
        if(lottos[i] == 0) cnt0++;
    }
    // 최고 일치
    int maxN = cnt + cnt0;
    // 최저 일치
    int minN = cnt;

    // 최고 순위 번호
    if(maxN == 0) answer.push_back(6);
    else answer.push_back(7 - maxN);
    // 최저 순위 번호
    if(minN <= 1) answer.push_back(6);
    else answer.push_back(7 - minN);

    return answer;
}