알고리즘/프로그래머스
[프로그래머스/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