728x90
▶문제 : 코딩 테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 (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
'프로그래머스 > C' 카테고리의 다른 글
프로그래머스 Level 1 : 약수의 개수와 덧셈 C언어 (0) | 2021.11.26 |
---|---|
프로그래머스 Level 1 : 음양 더하기 C언어 (0) | 2021.11.26 |
프로그래머스 Level 1 : 내적 C언어 (0) | 2021.11.26 |
프로그래머스 Level 1 : 소수만들기 C언어 (0) | 2021.11.26 |
프로그래머스 Level 1 : 숫자 문자열과 영단어 C언어 (0) | 2021.11.19 |
댓글