본문 바로가기
알고리즘

Programmers - 로또의 최고 순위와 최저 순위(C++)

by 장중앙 2021. 9. 29.

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

 

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

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

programmers.co.kr

 

풀이

입력 값으로 1~45까지의 숫자와 알아볼수 없는 번호 0이 있음

결과 순위에 반영되는 변수로 0의 개수와, 맞춘 숫자의 개수를 파악해야함

  - 최고 순위(0의 개수, 맞춘 숫자의 개수)

    - 최대로 맞췄다는 가정이므로 0의 개수만큼 추가로 맞췄다고 가정

    - 0의 개수 + 맞춘 숫자의 개수가 2미만이면 6등, 그 외의 경우에는 ( 7 - (0의 개수 + 맞춘 숫자의 개수) )등이 됨

  - 최저 순위(맞춘 숫자의 개수)

    - 최소로 맞췄다는 가정이므로 0으로 표기된것은 맞추지 못했다고 가정

    - 맞춘 숫자의 개수가 2미만이면 6등, 그 외의 경우에는 (7 - 맞춘 숫자의 개수)등이 됨

 

#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int undefined_cnt=0;
    int same_cnt=0;
    for(int i=0;i<6;i++){
        if(lottos[i]==0){
            undefined_cnt++;
            continue;
        }
        for(int j=0;j<6;j++){
            if(lottos[i]==win_nums[j]){
                same_cnt++;
                break;
            }
        }
    }
    
    //최대 순위
    if(same_cnt+undefined_cnt<2){
        answer.push_back(6);
    }
    else{
        answer.push_back(7-(same_cnt+undefined_cnt));
    }
    
    //최소 순위
    if(same_cnt<2)
        answer.push_back(6);
    else
        answer.push_back(7-same_cnt);
    
    return answer;
}

'알고리즘' 카테고리의 다른 글

Programmers - 모음사전(Python)  (0) 2021.09.29
BOJ 3190 - 뱀(C++)  (0) 2021.09.29
Programmers - 최소직사각형(C++)  (0) 2021.09.29
Programmers - 퍼즐 조각 채우기(C++)  (0) 2021.09.24
BOJ 2467 - 용액(C++)  (0) 2021.09.15

댓글