본문 바로가기

코딩 테스트/프로그래머스

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

728x90
반응형

문제 : 로또의 최고 순위와 최저 순위


풀이 방법

for문을 돌려서 lottos와 win_nums에 동일한 숫자가 있거나 lotts에 0이 있으면 미리 만들어 놓은 배열에 추가한다.

최고 순위는 배열의 크기 그 자체이고 최저 순위는 배열 요소에서 0을 제외한 나머지 크기이다.

count_if()를 이용해서 0을 제외한 나머지 크기를 구하고 스위치문으로 등수를 구했다.


소스 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    vector<int> same_num;
    
    for(int & i : lottos) {
        for(int & u : win_nums) {
            if(i == u || i == 0) {
                same_num.push_back(i);
                break;
            }
        }
    }
    
    answer.push_back(same_num.size());
    answer.push_back(count_if(same_num.begin(), same_num.end(), [](int e){return e != 0;}));
    
    for(int i=0; i<2; i++) {
        switch(answer[i]) {
            case 6:
                answer[i] = 1;
                break;
            case 5:
                answer[i] = 2;
                break;
            case 4:
                answer[i] = 3;
                break;
            case 3:
                answer[i] = 4;
                break;
            case 2:
                answer[i] = 5;
                break;
            default:
                answer[i] = 6;
                break;
        }
    }
    
    return answer;
}

 

728x90
반응형