백준 온라인 판매

KIMYEONGJUN·2024년 12월 6일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 정수 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();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글