본문 바로가기
코드업(codeup)/C

[코드업(codeup)/C]코드업(codeup) 3321 : 최고의 피자 C언어

by starfish22 2021. 11. 16.
728x90

▶문제 : Source Code (codeup.kr)

 

Source Code

로그인을 하시기 바랍니다!

codeup.kr

 

▶코드 작성

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

void quicksort(int *arr, int left, int right)//퀵 정렬
{
    int L = left, R = right, temp;
    int pivot = arr[(L + R) / 2];

    while (L <= R)
    {
        while (arr[L] > pivot) L++;
        while (arr[R] < pivot) R--;
        if (L <= R)
        {
            if (L != R)
            {
                temp = arr[L];
                arr[L] = arr[R];
                arr[R] = temp;
            }
            L++;
            R--;
        }
    }
    if (left < R) quicksort(arr, left, R);
    if (right > L) quicksort(arr, L, right);
}

int main()
{
    int n, a, b, dow, i, temp, sum = 0;
    int *tp;

    scanf("%d%d%d%d", &n, &a, &b, &dow);

    tp = (int *)malloc(sizeof(int) * n);

    for (i = 0; i < n; i++)
    {
        scanf("%d", &tp[i]);
    }

    quicksort(tp, 0, n - 1);//내림차순 퀵정렬

    temp = dow / a;//토핑 없을 때
    for (i = 0; i < n; i++)
    {
        sum += tp[i];//토핑 칼로리 합
        if (temp < (dow + sum) / (a + b * (i + 1)))//합한 값이 더 클 때
            temp = (dow + sum) / (a + b * (i + 1));
    }

    printf("%d", temp);

    free(tp);

    return 0;
}

 

▶해석

토핑 칼로리 배열(tp)을 내림차순으로 정렬한 후 1달러당 열량을 for문으로 계산

728x90

댓글