풀이과정
일단 lottos와 win_nums가 일치하는 개수를 세고, lottos의 0 개수를 센다.
최고로 일치하는 것은 번호가 일치하는 개수와 모르는 번호인 0의 개수의 합이다.
최저로 일치하는 것은 번호가 일치하는 개수만이다.
최고 순위는 7에서 최고로 일치하는 횟수를 빼주면 되고,
최저 순위는 7에서 최저로 일치하는 횟수를 빼주면 되는데
여기서 조건을 잘 걸어야 한다.
로또 맞는 번호가 하나도 없다면 최고 순위와 최저 순위는 둘 다 6이 된다.
더하여 로또 맞는 번호가 1개라도 최저 순위는 6이 되므로
if else 조건문을 잘 적어줘야 한다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int cnt = 0;
for(int i = 0; i < lottos.size(); i++){
for(int j = 0; j < win_nums.size(); j++){
if(lottos[i] == win_nums[j]) cnt++;
}
}
int cnt0 = 0;
for(int i = 0; i < lottos.size(); i++){
if(lottos[i] == 0) cnt0++;
}
// 최고 일치
int maxN = cnt + cnt0;
// 최저 일치
int minN = cnt;
// 최고 순위 번호
if(maxN == 0) answer.push_back(6);
else answer.push_back(7 - maxN);
// 최저 순위 번호
if(minN <= 1) answer.push_back(6);
else answer.push_back(7 - minN);
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level1] 숫자 문자열과 영단어 c++ (0) | 2022.09.03 |
---|---|
[프로그래머스][Level1] 소수 만들기 c++ (0) | 2022.09.03 |
[프로그래머스][Level1] 내적 c++ (0) | 2022.09.03 |
[프로그래머스][Level1] x만큼 간격이 있는 n개의 숫자 c++ (0) | 2022.09.03 |
[프로그래머스][Level1] K번째수 c++ (0) | 2022.09.03 |