컴굥일지

[Programmers/프로그래머스 lv1][C++] 로또의 최고 순위와 최저 순위 본문

알고리즘/코테 문제

[Programmers/프로그래머스 lv1][C++] 로또의 최고 순위와 최저 순위

gyong 2023. 8. 27. 20:44
반응형

문제

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

프로그래머스 로또의 최고 순위와 최저 순위
프로그래머스 로또의 최고 순위와 최저 순위

 

문제 내용

로또 번호와 당첨 번호를 입력받아, 몇 등을 했는지를 파악하는 문제이다.

단, 일부 로또 번호가 지워져있기 때문에, 배열의 로또 최고 순위와 최저 순위를 담아서 return 하면 된다.

 

문제 풀이

몇 개가 일치하는지 파악한 후에, 최고 순위의 경우 지워진 번호가 모두 일치한다고 가정하고, 최저 순위의 경우 지워진 번호가 모두 불일치한다고 가정하면 된다.

일치하는 개수가 아닌 등수를 반환해야 하므로, 마지막에 처리가 필요하다. 

 

코드

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int returnScore(int n){
    if(n==0 || n==1) return 6;
    else return 6-n+1;
}

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer(2,0);
    
    for(int i=0;i<6;i++){
        if(lottos[i]==0){
            answer[0]++;
            continue;
        }
        
        int num = count(win_nums.begin(),win_nums.end(), lottos[i]);
        answer[0]+=num;
        answer[1]+=num;
    }
    
    answer[0]=returnScore(answer[0]);
    answer[1]=returnScore(answer[1]);
    
    return answer;
}
반응형
Comments