프로그래머스 Level1 과일장수 (Java)

한승현·2022년 12월 31일
0

programmers

목록 보기
6/22
  • https://school.programmers.co.kr/learn/courses/30/lessons/135808

  • 문제

    1. 과일은 1~k 까지 점수를 가진다.
    2. 한 상자당 m개씩 담는다.한 상자의 가격 = (상자에 담긴 가장 작은 과일의 점수) * m
    3. 과일장수가 얻을 수 있는 최대이익을 구한다.
  • 제한사항

    • 3 ≤ k ≤ 9
    • 3 ≤ m ≤ 10
    • 7 ≤ score의 길이 ≤ 1,000,000
      • 1 ≤ score[i] ≤ k
    • 이익이 발생하지 않는 경우에는 0을 return 해주세요.
  • 코드

    import java.util.Arrays;
    public class Solution {
        public int solution(int k, int m, int[] score) {
            int answer = 0;
            Arrays.sort(score);
    
            int cnt = 0;
            for(int i = score.length-1; i >= 0; i--) {
                cnt++;
                if(cnt == m) {
                    cnt = 0;
                    answer += score[i]*m;
                }
            }
    
            return answer;
        }
    }
  • 풀이

    • 최소점을 기준으로 가격이 정해지기 때문에 greedy하게 풀 수 있다. 최대 이익을 얻기 위해서는 항상 높은 가격의 과일들만 담아서 팔면 되기 때문에 정렬 후 m개가 담길 때마다 계산을 하면 된다.
profile
사람을 만족시켜줄 수 있는 개발자

0개의 댓글