https://www.acmicpc.net/problem/5545
이 피자 가게는 토핑 N개에서 여러 종류를 선택해서 주문할 수 있다. 같은 종류의 토핑을 2개 이상 선택할 수는 없다. 또, 토핑을 전혀 선택하지 않을 수도 있다.
도우의 가격은 A원이고, 토핑의 가격은 모두 B원이다. 피자의 가격은 도우와 토핑의 가격의 합계가 된다. 즉, 토핑을 k종류 (0 ≤ k ≤ N) 선택했다면, 피자의 가격은 A + B*k원이 된다.
def solve(A,B, A_cal, B_cal):
B_cal = sorted(B_cal, reverse = True)
now_cost = A
now_cal = A_cal
now_eff = A_cal/A
for i in range(len(B_cal)):
next_cost = now_cost+B
next_cal = now_cal+B_cal[i]
next_eff = next_cal/next_cost
if now_eff < next_eff:
now_cost, now_cal = next_cost, next_cal
now_eff = next_eff
else: break
return int(now_eff)
if __name__=='__main__':
N = int(input())
A, B = list(map(int,input().split()))
A_cal = int(input())
B_cal = []
for _ in range(N):
B_cal.append(int(input()))
ans = solve(A,B,A_cal,B_cal)
print(ans)
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 13417번: 카드 문자열(그리디) (0) | 2021.09.14 |
---|---|
백준 12845번: 모두의 마블 (0) | 2021.09.13 |
백준 2872번 : 우리집엔 도서관이 있어(그리디) *** (0) | 2021.09.12 |
백준 2012번: 등수 매기기 **(그리디) (0) | 2021.09.12 |
백준 1448번 : 삼각형 만들기 (그리디)** (0) | 2021.09.12 |