내가 생각했을때 문제에서 원하는부분
첫째 줄에 정수 N(1 ≤ N ≤ 1,000)과 M(1 ≤ M ≤ 1,000)이 입력된다.
둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1 ≤ Pi ≤ 1,000,000)가 입력된다.
첫째 줄에 경래가 책정한 가격과 이 가격으로 올릴 수 있는 수익을 출력한다.
내가 이 문제를 보고 생각해본 부분
BufferedReader를 사용하여 입력을 받는다.
배열 정렬: 고객이 제시한 가격을 저장한 배열을 정렬한다.
최대 수익 계산: 각 고객 가격에 대해 가능한 판매 가격을 설정하고, 해당 가격으로 판매했을 때의 수익을 계산한다.
최대 수익을 올릴 수 있는 가격과 그 수익을 출력한다.
코드로 구현
package baekjoon.baekjoon_25;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
// 백준 1246번 문제
public class Main860 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N: 달걀의 수, M: 고객의 수
String[] input = br.readLine().split(" ");
int N = Integer.parseInt(input[0]);
int M = Integer.parseInt(input[1]);
// 고객의 가격을 저장할 배열
int[] P = new int[M];
// 고객의 가격 입력 받기
for(int i = 0; i < M; i++) {
P[i] = Integer.parseInt(br.readLine());
}
// 고객 가격을 정렬
Arrays.sort(P);
int maxRevenue = 0;
int bestPrice = 0;
// 가능한 가격을 정하고, 그 가격으로 최대 수익 계산
for(int i = 0; i < M; i++) {
int price = P[i];
// 팔 수 있는 달걀의 수는 N과 (M-i) 중 작은 값을 선택
int numEggs = Math.min(N, M - i);
// 최대 수익 계산
int revenue = price * numEggs;
// 최대 수익 갱신
if(revenue > maxRevenue) {
maxRevenue = revenue;
bestPrice = price;
}
}
// 결과 출력
System.out.println(bestPrice + " " + maxRevenue);
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.