문제
https://school.programmers.co.kr/learn/courses/30/lessons/77484#
로또의 최고 순위와 최저 순위를 찾는 문제였다.
문제풀이
lottos와 win_nums를 정렬하고 진행했다. lottos 값이 0일 경우에는 jocker 값을 증가하고 나머지 경우에 대해서는 win_nums와 같은지 투포인터를 이용해 풀었다. maxRank와 minRank를 if문으로 일일이 비교하기 싫어서 rank 배열을 만들고 for문을돌려서 결정했다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int jocker=0;
int correct = 0;
int minRank=6, maxRank=6;
int rank[6] = {-1,6,5,4,3,2};
int i;
sort(lottos.begin(), lottos.end());
sort(win_nums.begin(), win_nums.end());
int j=0;
for(i=0;i<6;i++){
if(j>5) break;
if(lottos[i] == 0){
jocker++;
}
else if(lottos[i] == win_nums[j]){
correct++;
j++;
continue;
}
else if(lottos[i] < win_nums[j]){
continue;
}
else{
j++;
i--;
continue;
}
}
for(i=1;i<=5;i++){
if(correct+jocker == rank[i]){
maxRank = i;
}
if(correct == rank[i]){
minRank = i;
}
}
answer.push_back(maxRank);
answer.push_back(minRank);
return answer;
}