Skip to content

Commit 38bc495

Browse files
committed
[level 1] Title: 과일 장수, Time: 58.54 ms, Memory: 141 MB -BaekjoonHub
1 parent a50dbed commit 38bc495

2 files changed

Lines changed: 139 additions & 0 deletions

File tree

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# [level 1] 과일 장수 - 135808
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/135808)
4+
5+
### 성능 요약
6+
7+
메모리: 141 MB, 시간: 58.54 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 연습문제
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 05월 14일 20:25:44
20+
21+
### 문제 설명
22+
23+
<p>과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다.</p>
24+
25+
<ul>
26+
<li>한 상자에 사과를 m개씩 담아 포장합니다.</li>
27+
<li>상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다.</li>
28+
</ul>
29+
30+
<p>과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다)</p>
31+
32+
<p>예를 들어, <code>k</code> = 3, <code>m</code> = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을 수 있습니다.</p>
33+
34+
<ul>
35+
<li>(최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수) = 2 x 4 x 1 = 8</li>
36+
</ul>
37+
38+
<p>사과의 최대 점수 <code>k</code>, 한 상자에 들어가는 사과의 수 <code>m</code>, 사과들의 점수 <code>score</code>가 주어졌을 때, 과일 장수가 얻을 수 있는 최대 이익을 return하는 solution 함수를 완성해주세요.</p>
39+
40+
<h5>제한사항</h5>
41+
42+
<ul>
43+
<li>3 ≤ <code>k</code> ≤ 9</li>
44+
<li>3 ≤ <code>m</code> ≤ 10</li>
45+
<li>7 ≤ <code>score</code>의 길이 ≤ 1,000,000
46+
47+
<ul>
48+
<li>1 ≤ <code>score[i]</code> ≤ k</li>
49+
</ul></li>
50+
<li>이익이 발생하지 않는 경우에는 0을 return 해주세요.</li>
51+
</ul>
52+
53+
<hr>
54+
55+
<h5>입출력 예</h5>
56+
<table class="table">
57+
<thead><tr>
58+
<th>k</th>
59+
<th>m</th>
60+
<th>score</th>
61+
<th>result</th>
62+
</tr>
63+
</thead>
64+
<tbody><tr>
65+
<td>3</td>
66+
<td>4</td>
67+
<td>[1, 2, 3, 1, 2, 3, 1]</td>
68+
<td>8</td>
69+
</tr>
70+
<tr>
71+
<td>4</td>
72+
<td>3</td>
73+
<td>[4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2]</td>
74+
<td>33</td>
75+
</tr>
76+
</tbody>
77+
</table>
78+
<hr>
79+
80+
<h5>입출력 예 설명</h5>
81+
82+
<p><strong>입출력 예 #1</strong></p>
83+
84+
<ul>
85+
<li>문제의 예시와 같습니다.</li>
86+
</ul>
87+
88+
<p><strong>입출력 예 #2</strong></p>
89+
90+
<ul>
91+
<li>다음과 같이 사과 상자를 포장하여 모두 팔면 최대 이익을 낼 수 있습니다.</li>
92+
</ul>
93+
<table class="table">
94+
<thead><tr>
95+
<th>사과 상자</th>
96+
<th>가격</th>
97+
</tr>
98+
</thead>
99+
<tbody><tr>
100+
<td>[1, 1, 2]</td>
101+
<td>1 x 3 = 3</td>
102+
</tr>
103+
<tr>
104+
<td>[2, 2, 2]</td>
105+
<td>2 x 3 = 6</td>
106+
</tr>
107+
<tr>
108+
<td>[4, 4, 4]</td>
109+
<td>4 x 3 = 12</td>
110+
</tr>
111+
<tr>
112+
<td>[4, 4, 4]</td>
113+
<td>4 x 3 = 12</td>
114+
</tr>
115+
</tbody>
116+
</table>
117+
<p>따라서 (1 x 3 x 1) + (2 x 3 x 1) + (4 x 3 x 2) = 33을 return합니다.</p>
118+
119+
120+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(int k, int m, int[] score) {
5+
int answer = 0;
6+
7+
Arrays.sort(score); //사과들을 오름차순 정렬
8+
9+
int ptr = score.length-m; //각 상자당 가장 낮은 점수를 가리킬 포인터 변수
10+
11+
12+
while(ptr >= 0){ //다음 포인터 위치가 범위를 안벗어날 때까지 계산
13+
answer+=score[ptr]*m;
14+
ptr-=m;
15+
}
16+
17+
return answer;
18+
}
19+
}

0 commit comments

Comments
 (0)