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

+ Recent posts