프로그래머스 Lev.1 명예의 전당 (1) [C언어]

지구온난화·2023년 3월 30일
0

프로그래머스 Lev.1

목록 보기
28/29

c언어 퀵정렬 함수click

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


int compare(const void* a, const void* b) {

    int num1 = *(int*)a;
    int num2 = *(int*)b;

    if (num1 < num2) return -1;
    if (num1 > num2) return 1;
    return 0;
}

int* solution(int k, int score[], size_t score_len) {
    int* answer = (int*)malloc(sizeof(int)*score_len);

    int arr[100] = { 0, };  //명예의 전당
    for (int i = 0; i < 100; i++) {
        arr[i] = 2001;
    }

    for (int i = 0; i < k; i++) {  //순위권까지는 비교 쉬움
        if (i >= score_len) break;  //출연자수가 k보다 작으면 break
        arr[i] = score[i];
        qsort(arr, i+1, sizeof(int), compare);
        answer[i] = arr[0];  //가장 낮은 점수
        printf("%d\n", answer[i]);
    }

    for (int i = k; i < score_len; i++) { //1~k까지의 순위가 정해진 후 남은 사람들
        if (score[i] > arr[0]) {  //k번째 사람보다 점수가 높다면
            arr[0] = score[i];  //가장 마지막 자리에 넣은 다음에(차피 원래 k번째였던 사람은 탈락하니깡)
            qsort(arr, k, sizeof(int), compare);  //다시 정렬하여
        }
        answer[i] = arr[0];  //가장 낮은 점수 저장
    }

    return answer;
}

2023-03-30

0개의 댓글