※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 5545번 문제인 최고의 피자이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/5545
5545번: 최고의 피자
상근이는 근처 피자 가게에서 매일 저녁으로 피자를 배달해 먹는다. 주머니 사정이 얇아진 상근이는 이번 달부터는 "최고의 피자"를 구매하려고 한다. 최고의 피자란, 피자 가게에서 주문할 수
www.acmicpc.net
모든 토핑의 가격은 동일하므로, 기본 도우 위에 열량이 높은 토핑부터 차례대로 올려보면서 최고의 피자를 만들어보자.
(현재 피자 열량)/(현재 피자 가격) 보다 (토핑의 열량)/(토핑의 가격)이 더 크다면 이 토핑을 올렸을 때 피자의 (열량)/(가격)이 오른다는 점을 이용해 그리디한 접근으로 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll cal[1000];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
ll totalprice, totalcal, price; cin >> totalprice >> price >> totalcal;
for (int i = 0; i < N; i++) cin >> cal[i];
sort(cal, cal + N);
for (int i = N - 1; i > -1; i--) {
if (cal[i] * totalprice > totalcal * price) totalprice += price, totalcal += cal[i];
else break;
}
cout << totalcal / totalprice;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 5547 // C++] 일루미네이션 (0) | 2022.06.05 |
---|---|
[BOJ 4351 // C++] Hay Points (0) | 2022.06.05 |
[BOJ 18511 // C++] 큰 수 구성하기 (0) | 2022.06.05 |
[BOJ 5546 // C++] 파스타 (0) | 2022.06.05 |
[BOJ 24929 // C++] Number Colosseum (0) | 2022.06.05 |