알고리즘/프로그래머스

[2021 Dev-Matching: 웹 백엔드 개발자(상반기)] 로또의 최고 순위와 최저 순위

래울 2021. 8. 14. 15:02

 

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

 

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

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

programmers.co.kr

 

매우쉽다.

 

// 로또 : 1~45숫자 중 6개를 찍어 맞춤(순서 상관 x)
// 일치한 번호에 따라 1~5순위 까지(6개일치 ~ 2개일치)

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// lottos_len은 배열 lottos의 길이입니다.
// win_nums_len은 배열 win_nums의 길이입니다.
int* solution(int lottos[], size_t lottos_len, int win_nums[], size_t win_nums_len) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(2); // (최저, 최고 순위)8bite만큼 할당
    answer[0]=7;
    answer[1]=7;
    for(int i=0; i<lottos_len; i++){
        for(int j=0; j<lottos_len; j++){
            if(lottos[i] == 0){
                answer[0]--;
                break;
            }
            else if(lottos[i] == win_nums[j]){
                answer[1]--;
                answer[0]--;
                break;
            }
        }
    }
    if(answer[1]==7)
        answer[1]=6;
    if(answer[0]==7)
        answer[0]=6;
    return answer;
}

 

7에서 번호 하나 맞을 때 마다, 1씩 빼주고

하나도 맞지 않았을 경우(7일 경우), 6을 넣어준다.