낭만 IT

반응형

알고리즘

그리디

힌트

가장 칼로리가 높은 토핑만 생각한다.

풀이

도우는 무조건 포함해야 하므로 cost(가격)와 cal(칼로리)를 도우의 가격과 칼로리로 초기화해준다.

토핑의 가격들이 입력되면 내림차순으로 정렬해준다.

(토핑은 한 번만 사용할 수 있으므로 남아 있는 토핑 중 가장 칼로리가 높은 토핑만 고려하면 된다.)

현재의 칼로리/달러가 i번째 토핑을 추가했을 때의 칼로리/달러보다 클 경우 cal과 cost를 갱신해준다.

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
 
#include<iostream>
#include<algorithm>
using namespace std;
 
int cmp(int a, int b){
    return a>b?1:0;
}
 
int main(){
    int n,A,B,C;
    int in[100];
    
    cin>>n;
    cin>>A;
    cin>>B;
    cin>>C;
    
    int cost=A, cal=C;
    
    for(int i=0;i<n;i++){
        cin>>in[i];
    }
    
    sort(in,in+n,cmp);
    
    for(int i=0;i<n;i++){
        if((float)cal/cost<(float)(cal+in[i])/(cost+B)){
            cal+=in[i];
            cost+=B;
        }
    }
    
    cout<<cal/cost;
    
}
반응형

'Problem Solve > Greedy' 카테고리의 다른 글

[백준] 8980번 택배 (C)  (2) 2020.03.07
[코드업] 4040 : 펜션 (C)  (0) 2020.03.07
[코드업] 3301 : 거스름돈 (C)  (0) 2020.03.06
[코드업] 3120 : 리모컨 (C)  (0) 2020.03.06
[코드업] 2001 : 최소 대금 (C)  (0) 2020.03.06

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band