プログラマー:宝くじの最高と最低ランキング
1.近接
2つの配列の値が等しいかどうかを決定するために、2つの配列は昇順に配列されます.
=>より大きくするためには、重複文の実行を最大限に減らすためには、宝くじ番号が当選番号より小さい位置にあると、その数字がないので、重複文から逃れる.
=>6個のマッチングが1番、5個のマッチングが2番、...1つの一致は6位で、等数+一致個数=7です.
(ここでは、0マッチングを無視しても6位だったので、間違った答えが出てしまいました…)
(同時に、6以下でなければなりません.)
2.私の回答
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
sort(lottos.begin(),lottos.end());
sort(win_nums.begin(),win_nums.end());
int correct=0;
int zerocount=0;
for(int i=0,j=0;i<6;i++){
if(lottos[i]==0) {
zerocount++;
continue;
}
for(;j<6;j++){
if(lottos[i]==win_nums[j]) correct++;
else if(lottos[i]<win_nums[j]) break;
}
/* 단순한 반복문
for(int j=0;j<6;j++){
if(lottos[i]==win_nums[j]) correct++;
}
*/
}
answer.push_back(min(max(7-(correct+zerocount),1),6));
answer.push_back(min(7-(correct),6));
return answer;
}
Reference
この問題について(プログラマー:宝くじの最高と最低ランキング), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongopo/프로그래머스-로또의-최고-순위와-최저-순위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol