728x90

 

 

문제설명

입력 & 출력

나의 풀이

 

이번 문제는 주어진 사과 점수를 이용해 상자를 포장하고 최대 이익을 계산하는 간단한 문제입니다.

 

각 상자는 m개의 사과로 구성되고, 상자의 가격은 가장 낮은 점수m을 곱해 계산됩니다.

 

문제에서 각 상자는 m개의 사과로 구성된다고 했으니, 주어진 m만큼 상자를 나누고, 정렬을 한다면 쉽게 접근할 수 있습니다.

 

 

이해를 돕기위해 입출력 예 #2번을 그림과 같이 표현하면 위와 같습니다.

 

먼저 주어진 score배열을 정렬한다면 아래의 그림처럼 배열이 정렬됩니다. 그리고 m은 3이니깐 3개씩 자른다면 빨간색 선을 기준으로 4개의 사과 상자가 나오게 됩니다.

 

정렬된 배열에서 각 상자의 최소 점수는 상자의 첫 번째 값이 됩니다. 따라서 for문을 사용해 배열의 끝에서부터 m개씩 묶어가며 각 상자의 최소값을 쉽게 구할 수 있습니다.

 

최솟값minScore 배열에 저장한 후, Stream APImapsum 메서드를 사용하여 각 상자의 최소 점수(x)상자의 개수 m곱해 총합을 구하면 됩니다.