728x90
문제설명
입력 & 출력
나의 풀이
이번 문제는 주어진 사과 점수를 이용해 상자를 포장하고 최대 이익을 계산하는 간단한 문제입니다.
각 상자는 m개의 사과로 구성되고, 상자의 가격은 가장 낮은 점수에 m을 곱해 계산됩니다.
문제에서 각 상자는 m개의 사과로 구성된다고 했으니, 주어진 m만큼 상자를 나누고, 정렬을 한다면 쉽게 접근할 수 있습니다.
이해를 돕기위해 입출력 예 #2번을 그림과 같이 표현하면 위와 같습니다.
먼저 주어진 score배열을 정렬한다면 아래의 그림처럼 배열이 정렬됩니다. 그리고 m은 3이니깐 3개씩 자른다면 빨간색 선을 기준으로 4개의 사과 상자가 나오게 됩니다.
정렬된 배열에서 각 상자의 최소 점수는 상자의 첫 번째 값이 됩니다. 따라서 for문을 사용해 배열의 끝에서부터 m개씩 묶어가며 각 상자의 최소값을 쉽게 구할 수 있습니다.
최솟값을 minScore 배열에 저장한 후, Stream API의 map과 sum 메서드를 사용하여 각 상자의 최소 점수(x)와 상자의 개수 m을 곱해 총합을 구하면 됩니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 기사단원의 무기 (약수, Java) (0) | 2024.09.28 |
---|---|
[프로그래머스] Lv.3 네트워크 (DFS/BFS, Java) (0) | 2024.07.04 |
[프로그래머스] Lv.1 모의고사 (브루트 포스 알고리즘, ArrayList, stream API, mapToInt() Java) (0) | 2024.06.22 |
[프로그래머스] Lv.2 큰 수 만들기 (Greedy 알고리즘 , 탐욕, ,StringBuilder, Java) (0) | 2024.06.17 |
[프로그래머스] Lv.1 구명보트 (Greedy 알고리즘, Java) (0) | 2024.06.17 |