[Java] 과일 장수

2025. 3. 18. 10:11·CodingTest/[프로그래머스] 자바
목차
  1. (1) 문제 설명
  2. (2) 제한 사항
  3. (3) 입출력 예시
  4. 2. 문제 접근 방식
  5. (1) 문제 조건
  6. (2) 코드 분석
  7. (3) 코드 동작 과정

1. 문제 설명


(1) 문제 설명


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

사과는 상태에 따라 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 함수를 완성해주세요.

 

 

 

(2) 제한 사항


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

 

 

 

(3) 입출력 예시


k m score result
3 4 [1, 2, 3, 1, 2, 3, 1] 8
4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33

 

 

 

2. 문제 접근 방식


(1) 문제 조건


사과는 1점부터 k점까지 있으며, k점이 최상품입니다.

한 상자에 m개의 사과를 담아야 합니다.

한 상자의 가격은 가장 낮은 점수 * m 으로 결정합니다.

최대 이익을 구하여 반환하여야 합니다.

 

 

 

(2) 코드 분석


import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
Arrays.sort(score); // 1. 사과 점수를 오름차순 정렬
int answer = 0;
// 2. 뒤에서부터 m개씩 그룹을 만들어 상자를 포장
for (int i = score.length; i >= m; i -= m) {
answer += score[i - m] * m; // 3. 최저 점수 * m을 누적하여 이익 계산
}
return answer; // 4. 최대 이익 반환
}
}

 

 

 

(3) 코드 동작 과정


int k = 3;
int m = 4;
int[] score = {1, 2, 3, 1, 2, 3, 1};

 

1️⃣ 오름차순 정렬 : [1, 1, 1, 2, 2, 3, 3]

2️⃣ 반복문 실행

i = score.length = 7

m = 4

i -= m 방식으로 감소

i 값 선택된 구간 최저점수  추가된 가격 총이익
7 [2, 2, 3, 3,] 2 2 * 4 = 8 8
7 - 4 = 3 (종료) - - - -

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
  1. (1) 문제 설명
  2. (2) 제한 사항
  3. (3) 입출력 예시
  4. 2. 문제 접근 방식
  5. (1) 문제 조건
  6. (2) 코드 분석
  7. (3) 코드 동작 과정
'CodingTest/[프로그래머스] 자바' 카테고리의 다른 글
  • [Java] 카드 뭉치
  • [Java] 푸드 파이트 대회
  • [Java] 가장 가까운 같은 글자
  • [Java] 두 개 뽑아서 더하기
leonie.
leonie.
  • leonie.
    leveloper
    leonie.
  • 글쓰기 관리
    • 분류 전체보기 N
      • Language
        • Java
      • Git
      • CS
      • CodingTest
        • [프로그래머스] 자바
      • Information
      • Framework
        • Spring
      • DBMS
        • Redis
        • SQL
      • AWS
      • OS
        • Mac
      • 자격증 N
        • 정보처리기사 N
      • 회고
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보처리기사
    정처기필기
    코딩테스트
    자바
    알고리즘
    springboot
    스프링
    Java
    정처기
    프로그래머스
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
leonie.
[Java] 과일 장수
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.