코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

1246번 : 온라인 판매

2022. 12. 16. 17:04

https://www.acmicpc.net/problem/1246

 

1246번: 온라인 판매

첫째 줄에 정수 N(1 ≤ N ≤ 1,000)과 M(1 ≤ M ≤ 1,000)이 입력된다. 둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1 ≤ Pi ≤ 1,000,000)가 입력된다.

www.acmicpc.net

 

 

문제

 

 

소스코드

package com.company;

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt(); sc.nextLine();
        Integer arr[] = new Integer[m];
        for(int i=0;i<m;i++) {
            arr[i] = Integer.parseInt(sc.nextLine());
          //arr[i] = sc.nextInt(); sc.nextLine();
        }
        Arrays.sort(arr, Collections.reverseOrder());

        int price=0; //책정 가격
        int max=0; //올릴 수 있는 최대 수익
        int minIdx = Math.min(n,m);

        for(int i=0;i<minIdx;i++) {
            if (arr[i] * (i + 1) > max) { //이전 수익보다 더 높을 경우
                price = arr[i];
                max = arr[i] * (i + 1);
            }
        }

        System.out.println(price + " " + max);
    }
}

 

 

해결방법

이분 탐색을 이용해 풀려고 하였는데 뭔가 좀 아닌 것 같아 문제를 다시 읽어보았다.

"한 고객에게 두 개 이상의 달걀은 팔지 않기로 하였다." 이 말의 즉슨 한 고객에게 무조건 하나의 달걀만 판다는 말이었다.

이러면 매우 간단해진다. 달걀의 수와 고객의 수를 기준으로 나올 수 있는 최댓값만 구하면 되기 때문이다. 근데 여기서 하나 더 유의할 점이 있는데 

달걀(N)이 5개여도 고객(M)이 4명이면 4개만 팔 수 있다.
고객(M)이 5명이어도 달걀(N)이 4개면 4개만 팔 수 있다.
=> 달걀(N)과 고객(M)중 최솟값에 맞춰 계산해야한다.

이 점을 유의하여 코드를 작성해주면 문제를 해결할 수 있다.

 

예시

달걀 5개, 고객 4명
2 7 8 10

1개 판매 시 최대 이익(10원으로 판매): 10
2개 판매 시 최대 이익(8원으로 판매): 16
3개 판매 시 최대 이익(7원으로 판매): 21
4개 판매 시 최대 이익(2원으로 판매): 8

=> 21

'알고리즘 > 백준' 카테고리의 다른 글

1269번 : 대칭 차집합  (0) 2023.01.02
13413번 오셀로 재배치  (0) 2023.01.02
17615번 : 볼 모으기  (0) 2022.10.02
15904번 : UCPC는 무엇의 약자일까?  (0) 2022.09.19
8979번 : 올림픽  (0) 2022.09.18
    '알고리즘/백준' 카테고리의 다른 글
    • 1269번 : 대칭 차집합
    • 13413번 오셀로 재배치
    • 17615번 : 볼 모으기
    • 15904번 : UCPC는 무엇의 약자일까?
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바