728x90
https://level.goorm.io/exam/195697/%EA%B3%BC%EC%9D%BC-%EA%B5%AC%EB%A7%A4/quiz/1
728x90
내 생각
과일을 포만감 순으로 내림차순 정렬 후 구매할 수 있는 만큼 구매하는 방식으로 풀었다.
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
// N, K 입력
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
// 과일 조각의 개수와 포만감을 담을 배열
int[][] basket = new int[N][2]; // basket[i][0] := i번째 과일의 한 조각의 포만감, basket[i][1] := i번째 과일의 남은 조각 개수
for(int i = 0; i < N; i++) {
// 과일별 P, C 입력
st = new StringTokenizer(br.readLine());
int P = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
basket[i][0] = C / P;
basket[i][1] = P;
}
// 과일 바구니를 포만감 높은 순으로 정렬
Arrays.sort(basket, (o1, o2) -> o2[0] - o1[0]);
// 가지고 있는 돈만큼 과일 조각 구매
long result = 0;
for(int i = 0; i < N; i++) {
if(basket[i][1] <= K) { // 남은 돈으로 현재 과일의 모든 조각을 살 수 있는 경우
result += basket[i][0] * basket[i][1];
K -= basket[i][1];
}
else { // 남은 돈으로 현재 과일의 모든 조각을 살 수 없는 경우
result += basket[i][0] * K;
break;
}
}
// 답 출력
System.out.println(result);
}
}
728x90
'Problem Solving > goorm' 카테고리의 다른 글
[구름톤 챌린지 4주 차 학습 일기] 17일차 미션 문제 17. 그래프의 밀집도 (java) (0) | 2023.09.06 |
---|---|
[구름톤 챌린지 4주 차 학습 일기] 16일차 미션 문제 16. 연합 (java) (0) | 2023.09.04 |
[구름톤 챌린지 3주 차 학습 일기] 14일차 미션 문제 14. 작은 노드 (java) (0) | 2023.08.31 |
[구름톤 챌린지 3주 차 학습 일기] 13일차 미션 문제 13. 발전기 (2) (java) (0) | 2023.08.31 |
[구름톤 챌린지 3주 차 학습 일기] 12일차 미션 문제 12. 발전기 (java) (0) | 2023.08.31 |