본문 바로가기

Algorithm/Implementation

(C++) - 프로그래머스(2021 Dev-Matching: 웹 백엔드 개발자(상반기)) : 압축

반응형

programmers.co.kr/learn/courses/30/lessons/77484?language=cpp#

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

구현문제였습니다.

 

풀이방법

 1. 0인 개수를 notMatch에 lottos와 win_nums가 같은 수의 개수를 match에 저장합니다.

 

 2. 가장 잘되는 경우는 모든 0이 win_nums의 수인 경우입니다. 따라서 7 - (match + notMatch) 가 답입니다. 

    가장 안되는 경우는 모든 0이 win_nums에 없는 수인 경우입니다. 따라서 7 - 기존에 일치했던 개수가 답입니다.

6,6 이 답인 경우도 있으니 만약 7이 나왔다면 해당 변수를 6으로 재 할당해줍니다.

Code

#include <bits/stdc++.h>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    int match=0,notMatch=0,big=0,small=0;
    for(int i = 0; i < lottos.size(); i++){
        if(!lottos[i]) notMatch++;
        for(int j = 0; j < win_nums.size(); j++){
            if(lottos[i] == win_nums[j]) match++;
        }
    }
    big = 7 - (match + notMatch);
    if(big == 7) big = 6;
    small = 7 - match;
    if(small == 7) small = 6;
    return {big,small};
}