본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 1 : 로또의 최고 순위와 최저 순위 C언어

by starfish22 2021. 11. 19.
728x90

▶문제 : 코딩 테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

 

▶코드 작성

#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)
{
    int *answer = (int *)malloc(sizeof(int) * 2);//[최대순위,최소순위]

    int arr[7] = {6, 6, 5, 4, 3, 2, 1};//arr[6] 6개 다 맞았을 때 1등
    int zero = 0, match = 0, i, j;

    for (i = 0; i < lottos_len; i++)
    {
        if (lottos[i] == 0)
        {
            zero++;//0일 때 개수
        }
        else
        {
            for (j = 0; j < win_nums_len; j++)
            {
                if (lottos[i] == win_nums[j])
                {
                    match++;//같은 수일 때 개수
                    break;
                }
            }
        }
    }
    answer[0] = arr[match + zero];//최대 순위
    answer[1] = arr[match];//최소 순위
    return answer;
}

 

▶해석

0인 부분과 숫자가 맞는 부분의 개수로 최고 순위와 최저 순위를 알 수 있기 때문에 0인 부분의 수(zero) , 숫자가 맞는 수(match)를 변수로 두었다. 배열(arr)을 선언하여 zero+match의 값마다 순위를 초기화하여 arr [match+zero]는 최대 순위 , arr [match]는 최소 순위를 구할 수 있다.

728x90

댓글