Coding Test/programmers
[프로그래머스] 로또의 최고 순위와 최저 순위 c++
owls
2022. 8. 18. 12:13
728x90
문제 설명
내가 고른 번호는 lottos 벡터에 저장되어 있고, 0은 알 수 없는 수이다.
당첨 번호는 win_nums 벡터에 저장되어 있다.
내가 고른 로또의 최고 순위와 최저 순위를 구하는 문제이다.
제한 사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
입출력 예
| lottos | win_nums | result |
| [44, 1, 0, 0, 31, 25] | [31, 10, 45, 1, 6, 19] | [3, 5] |
| [0, 0, 0, 0, 0, 0] | [38, 19, 20, 40, 15, 25] | [1, 6] |
| [45, 4, 35, 20, 3, 9] | [20, 9, 3, 45, 4, 35] | [1, 1] |
풀이
check point!
1. 0 개수 = zero
2. 0이 아닌 원소 중 당첨된 번호 개수 = cnt
위의 1, 2번을 이용하여 최대 순위, 최소 순위를 구할 수 있다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int zero = 0, cnt = 0;
for(const auto &it : lottos){
if( 0 == it){
zero += 1;
}
}
for(const auto &lo : lottos){
for(const auto &win : win_nums){
if(lo == win){
cnt++;
break;
}
}
}
if( cnt == 0){
cnt++;
if(zero == 6){
zero--;
}
}
int a = 7 - (zero + cnt);
int b = 7 - cnt;
answer.push_back(a);
answer.push_back(b);
return answer;
}
728x90