문제
* 해당 문제의 모든 저작권은 프로그래머스 측에 있으며 본 블로그는 학업 흔적을 남겨 학업 상향을 위한 블로그로 이익을 추구하지 않으며 프로그래머스 측의 약관을 위배하지 않음을 명시합니다.*
https://programmers.co.kr/learn/courses/30/lessons/77484
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
풀이
반복문으로 해당 당첨번호가 있는지 확인했고, 0이 있을 경우 따로 개수를 체크해두었다.
결과적으로 최대한 높은 등수일 경우는 0이 전부 당첨이라 가정하면 되고, 낮은 등수일 때는 틀렸다고 가정하면 되니 0의 개수를 높은 등수 당첨번호 개수에 더해주고 낮은 등수는 틀렸으니까 그냥 놔두면 된다고 생각했다.
숫자가 개수가 적어서 정렬할 필요가 없을 거 같다.
소스 코드
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int rankcheck(int a) {
switch (a) {
case 6:
return 1;
case 5:
return 2;
case 4:
return 3;
case 3:
return 4;
case 2:
return 5;
case 1:
return 6;
case 0:
return 6;
}
}
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int win_check = 0;
int lose_check = 0;
int zero_check = 0;
for(int i = 0; i < lottos.size(); i++) {
if(lottos[i] == 0)
zero_check++;
if(find(win_nums.begin(), win_nums.end(), lottos[i]) == win_nums.end())
continue;
else
win_check++;
}
lose_check = win_check;
win_check += zero_check;
//cout << rankcheck(win_check) << '\n' << rankcheck(lose_check) << '\n';
answer.push_back(rankcheck(win_check));
answer.push_back(rankcheck(lose_check));
return answer;
}
'Programming Practice > PROGRAMMERS' 카테고리의 다른 글
[PG] 키패드 누르기 - Lv.1 (C++) (0) | 2022.06.28 |
---|---|
[PG] 숫자 문자열과 영단어 - Lv.1 (C++) (0) | 2022.06.25 |
[PG] 신고 결과 받기 - Lv.1 (0) | 2022.06.14 |
[PG] 신규 아이디 추천 - Lv.1 (0) | 2022.06.12 |