프로그래머스/C
프로그래머스 Level 1 : 로또의 최고 순위와 최저 순위 C언어
starfish22
2021. 11. 19. 11:36
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