문제풀이(Problem Solving)

프로그래머스, 로또의 최고 순위와 최저 순위 : C++ [CPP]

게임이 더 좋아 2021. 11. 5. 12:04
반응형
728x170

어렵지는 않지만 그렇다고 단순하지도 않다.

https://programmers.co.kr/learn/courses/30/lessons/77484

 


 

#맞는 풀이

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int curWin = 0; // 일치하는 숫자
    int curZero = 0; // 0인 숫자
    int min, max = 0; //최저, 최고등수
    
    for(int a : lottos){
        if( a == 0){curZero++; continue; } // 당첨번호가 지워져있다면 ++
        
        for(int b : win_nums){
            if( a == b){ curWin++; continue;} // 당첨번호와 일치한다면 ++
        }
    }
    
    //당첨번호만이 맞을 경우 최저등수
    switch (curWin){
        case 2:
            min = 5;
            break;
        case 3:
            min = 4;
            break;
        case 4:
            min = 3;
            break;
        case 5:
            min = 2;
            break;
        case 6:
            min = 1;
            break;
        default:
            min = 6;
    }
    //당첨번호 + 지워져있는 것까지 맞을 경우 최고 등수
    switch (curWin + curZero){
        case 2:
            max = 5;
            break;
        case 3:
            max = 4;
            break;
        case 4:
            max = 3;
            break;
        case 5:
            max = 2;
            break;
        case 6:
            max = 1;
            break;
        default:
            max = 6;
    }
    
    answer.push_back(max);
    answer.push_back(min);
    return answer;
}

 

 

사실 짧다면.. 굳이 switch로 하지 않아도 되었다. 

하지만 갑자기 그냥 switch, case 문을 쓰고 싶었다.

 

 

728x90
반응형
그리드형