본문 바로가기
알고리즘 문제풀이/백준

[백준 5545] 최고의 피자

by m2162003 2020. 12. 29.

www.acmicpc.net/problem/5545

 

5545번: 최고의 피자

상근이는 근처 피자 가게에서 매일 저녁으로 피자를 배달해 먹는다. 주머니 사정이 얇아진 상근이는 이번 달부터는 "최고의 피자"를 구매하려고 한다. 최고의 피자란, 피자 가게에서 주문할 수

www.acmicpc.net

그리디를 사용하는 문제이다. 

피자 1원당 최고의 열량을 찍고 내려오는 지점을 찾는 문제이다.

 

최고점을 찾아야 하므로 이전 열량/가격과 현재의 열량/가격을 비교해서 같거나 크면 업데이트, 작으면 함수를 끝낸다.

**주의: 같을 때도 끝내지 않고 계속 진행해야 한다!

 

피자 가격은 동일하므로 열량을 내림차순으로 정렬한다. 높은 -> 낮은 열량 수준으로 더해서 확인한다.

 

#include <stdio.h>
#include <algorithm>

using namespace std;
int n, a, b, c, d;
int arr[100];
int main(void)
{
  scanf("%d%d%d%d", &n, &a, &b, &c);

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

  sort(arr, arr + n);

  int kcal = c, price = a;
  int best = kcal / price;
  for (int i = n - 1; i > -1; i--)
  {
    int after = (kcal + arr[i]) / (price + b);
    if (best <= after)
    {
      kcal += arr[i];
      price += b;
      best = after;
    }
    else
    {
      break;
    }
  }
  printf("%d\n", best);
  return 0;
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 5567] 결혼식  (0) 2020.12.29
[백준 11399] ATM  (0) 2020.12.29
[백준 1477] 휴게소 세우기  (0) 2020.12.28
[백준 19640] 화장실의 규칙  (0) 2020.12.28
[백준 3079] 입국심사  (0) 2020.12.28

댓글