[Algorithm] 과일 장수

2025. 1. 6. 09:21·Algorithm/Practice

문제 설명

문제 설명 과일 장수가 사과 상자를 포장하고 있습니다. 

사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 

  • 한 상자에 사과를 m개씩 담아 포장합니다.
  • 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다.

과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을 수 있습니다. (최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수) = 2 x 4 x 1 = 8 사과의 최대 점수 k, 한 상자에 들어가는 사과의 수 m, 사과들의 점수 score가 주어졌을 때, 과일 장수가 얻을 수 있는 최대 이익을 return하는 solution 함수를 완성해주세요.

 

문제 유형

  • 정렬
  • 그리디 알고리즘

 

문제 풀이

  1. 주어진 점수 배열을 내림차순으로 정렬한다. (priority_queue)
  2. queue에서 m개만큼 꺼낸다.
  3. 최저 점수와 m개를 곱하여 최대이익을 계산한다.
  4. 계산 결과를 반환값에 곱한다.

 

코드 작성

#include <vector>
#include <queue>
#include <cmath>

using namespace std;

int solution(int k, int m, vector<int> scores) {
    int answer = 0;
    priority_queue<int> pq;
    
    for (int score :scores)
    {
        pq.push(score);
    }
    
    while (pq.size() >= m)
    {
        int minScore = 9;
        for (int i = 0; i < m; i++)
        {
            minScore = min(minScore, pq.top());
            pq.pop();
        }
        answer += minScore * m;
    }
    
    return answer;
}

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] 소수 만들기  (0) 2025.01.07
[Algorithm] 모의고사  (0) 2025.01.06
[Algorithm] 명예의 전당  (2) 2025.01.02
[Algorithm] 콜라 문제  (1) 2025.01.02
[Algorithm] 푸드 파이트 대회  (0) 2024.12.31
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] 소수 만들기
  • [Algorithm] 모의고사
  • [Algorithm] 명예의 전당
  • [Algorithm] 콜라 문제
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Algorithm
    소프트 레퍼런신
    게임동기화
    Animation
    unreal
    gas
    AI
    GameplayEffect
    c++
    디자인 패턴
    사전캠프
    액터
    디자인패턴
    Implement
    KPT회고
    assetmanager
    unrealengine
    tsoftobjectptr
    DesignPattern
    basic
    레벨디자인
    component
    퀘스트
    본캠프
    알고리즘
    Design Pattern
    actor
    내일배움캠프
    하드 레퍼런싱
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] 과일 장수
상단으로

티스토리툴바