[백준 알고리즘]/[C++]
5545번 최고의 피자 | Baekjoon BOJ 백준 5545 C++ 코드, 해설, 풀이
말하는펭귄
2021. 1. 26. 21:32
728x90
반응형
이번 포스팅은 백준 5545번 최고의 피자입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
5545번: 최고의 피자
상근이는 근처 피자 가게에서 매일 저녁으로 피자를 배달해 먹는다. 주머니 사정이 얇아진 상근이는 이번 달부터는 "최고의 피자"를 구매하려고 한다. 최고의 피자란, 피자 가게에서 주문할 수
www.acmicpc.net
기본 알고리즘
그리디 알고리즘
참고
line 22
열량 높은 순으로 토핑 내림차순 정렬
line 30-36
토핑을 1개씩 추가할 때마다 1원 당 열량을 구하고 기존의 1원 당 열량보다 크면 1원 당 열량 갱신
전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
//백준5545 최고의피자
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int i, int j) {
return i > j;
}
int main() {
int N, A, B, C; //토핑개수, 도우가격, 토핑가격, 도우열량
cin >> N >> A >> B >> C;
vector<int> d; //토핑 열량 벡터
for (int i = 0; i < N; i++) {
int t;
cin >> t;
d.push_back(t);
}
sort(d.begin(), d.end(), compare); //내림차순 정렬
int doughCal = C / A; //1원 당 도우 열량
int bestCal = doughCal; //최고의 피자의 1원 당 열량 (토핑선택안함)
int totalPrice = A; //총 가격
int totalCal = C; //총 열량
for (int i = 0; i < N; i++) {
totalPrice += B;
totalCal += d[i];
if (bestCal < totalCal / totalPrice) {
bestCal = totalCal / totalPrice;
}
}
cout << bestCal;
}
|
cs |
728x90
반응형