백준 온라인 판매

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개의 댓글

관련 채용 정보