Level1
문제
입출력 예
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] |
풀이
일반적인 로또와 같이 당첨되는 룰을 가지고 있다.
0의 갯수를 눈여겨봐야한다는걸 바로 캐치하면 쉽게 풀리는 문제였다.
#include <string>
#include <vector>
using namespace std;
int getRank(int a);
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int correctCnt = 0;
int zeroCnt = 0;
for ( int i = 0 ; i < win_nums.size(); ++i ){
for ( int j = 0 ; j < lottos.size(); ++j ){
if ( win_nums[i] == lottos[j]){
++correctCnt;
break;
}
}
}
for ( int j = 0 ; j < lottos.size(); ++j ){
if ( lottos[j] == 0){
++zeroCnt;
}
}
answer.push_back(getRank(correctCnt+zeroCnt));
answer.push_back(getRank(correctCnt));
return answer;
}
int getRank (int a ){
switch(a){
case 0:
case 1:
return 6;
case 2:
return 5;
case 3:
return 4;
case 4:
return 3;
case 5:
return 2;
case 6:
return 1;
}
}
다른사람의 풀이
int func(int n){
if(n == 6) return 1;
else if(n == 5) return 2;
else if(n == 4) return 3;
else if(n == 3) return 4;
else if(n == 2) return 5;
else return 6;
}
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
// 0의 갯수를 담는 변수
int zero = 0;
for(int i = 0; i < lottos.size(); i++){
if(lottos[i] == 0) zero++;
}
// lottos와 win_nums에서 일치하는 번호 갯수를 담는 변수
int check = 0;
int visited[6] = {0,};
for(int i = 0; i < lottos.size(); i++){
for(int j = 0; j < win_nums.size(); j++){
if(visited[i] == 0 && lottos[i] == win_nums[j]){
visited[i] = 1;
check++;
}
}
}
answer.push_back(func(zero+check));
answer.push_back(func(check));
return answer;
}
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=cpp
'개발 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 명예의전당(1) (0) | 2022.12.17 |
---|---|
[프로그래머스/C++] 과일장수 (0) | 2022.12.16 |
[프로그래머스/C++] 콜라문제 (0) | 2022.12.14 |
[프로그래머스/C++] 크레인 인형 뽑기 (0) | 2022.12.13 |
[프로그래머스/C++] 기사단원의 무기 (0) | 2022.12.12 |