프로그래머스 - 로또의 최고 순위와 최저 순위 (Lv.1)

less than 1 minute read

문제 링크

문제 접근

  • lottos 의 0이 아닌 숫자와 win_nums 의 숫자가 일치하는 개수(hit)는 최소 점수가 된다.
  • lottos 의 0을 모두 hit 개수에 더해주면 최고 점수가 된다.
  • 맞힌 개수별 등수를 배열로 미리 선언해둔다.

구현(All Pass)

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer;
    int allNums[46] = {0, }; // 1 ~ 45
    int rank[7] = {6, 6, 5, 4, 3, 2, 1};
    for(int i=0; i<win_nums.size(); i++){
        allNums[win_nums[i]] = 1;
    }
    
    int hit = 0, numZero = 0;
    for(int i=0; i<lottos.size(); i++){
        if(lottos[i]==0) numZero++;
        else if(allNums[lottos[i]]==1) hit++;
    }
    int maxScore = hit + numZero;
    int minScore = hit;
    answer.push_back(rank[maxScore]);
    answer.push_back(rank[minScore]);
    
    return answer;
}

Leave a comment