알고리즘/프로그래머스

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

녕이 2022. 4. 1. 18:07
728x90

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

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

find() 함수를 사용해서, 구매한 로또 번호가 당첨된 로또 번호 중 하나인지 확인하고 횟수를 카운팅 한다.

최고 순위는 (맞춘 횟수 + 맞았을지도 모르는 번호의 개수)의 순위

최저 순위는 (맞춘 횟수)의 순위

 

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int ranking(int n){
    switch(n){
        case 6: return 1;
        case 5: return 2;
        case 4: return 3;
        case 3: return 4;
        case 2: return 5;
        default: return 6;
    }
}

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int correct = 0, zero=0;
    
    for(int i=0; i<6; i++){
        int n = lottos[i];
        if(n == 0) zero++;
        else{
            auto it = find(win_nums.begin(), win_nums.end(), n); //구매한 로또 번호가 당첨된 로또 번호 중 하나인지 체크
            if(it != win_nums.end()) { //동일한 값이 있다면
                correct++;
            }
        }
    }
    
    answer.push_back(ranking(correct + zero));
    answer.push_back(ranking(correct));
    return answer;
}

 

 

728x90