본문 바로가기
알고리즘 & 자료구조/백준

백준 5545

by 신재권 2021. 12. 28.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main5545 {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine()); //토핑의 종류수 N
		StringTokenizer st = new StringTokenizer(br.readLine());
		int A = Integer.parseInt(st.nextToken()); // 도우의 가격 A
		int B = Integer.parseInt(st.nextToken()); // 토핑의 가격 B
		int C = Integer.parseInt(br.readLine()); // 도우의 열량 C 
		Integer[] D = new Integer[N]; //토핑의 열량 
		for(int i=0; i<N; i++) {
			D[i] = Integer.parseInt(br.readLine());
		}
		
		//최고의 피자 = 열량이 가장 높은 피자 
		//A + D(선택한갯수) * B = 합친돈 
		//C + D = 열량 
		// 열량 / 합친돈 이 가장 큰 것 
		// 열량은 높고 , 선택한 갯수가 낮아야 한다.
		
		Arrays.sort(D, Collections.reverseOrder()); //칼로리가 높은순으로 정렬 
		
		//토핑이 0개일 시, 칼로리당 가격 
		int ans = C/A; 
		
		int price = A;
		int kcal = C; 
		for(int i=0; i<N; i++) {
			price += B; //토핑의 가격을 더함 
			kcal += D[i];  //토핑의 칼로리를 더함 
			int tmp = kcal/price;
			if(ans > tmp) { //칼로리당가격이 낮아지면 종료 ans가 답 )
				break;
			}else {
				ans = tmp;
			}
		}
		
		System.out.println(ans);
		
	}
}

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 17262  (0) 2021.12.30
백준 17521  (0) 2021.12.29
백준 1326  (0) 2021.12.27
백준 11558  (0) 2021.12.26
백준 17204  (0) 2021.12.25