๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/15407)
< How to Eat at a Buffet >
๋ฌธ์ ํ์ด
๊ฐ์น๊ฐ ํฐ ์์๋๋ก ์ ๋ ฌํด ์์์ ๋ด๋๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
public class _15407_ { // How to Eat at a Buffet
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
int area = Integer.parseInt(bf.readLine());
ArrayList<int[]> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int v = Integer.parseInt(st.nextToken());
int a = Integer.parseInt(st.nextToken());
list.add(new int[] { v, a });
}
Collections.sort(list, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
}
return o2[0] - o1[0];
}
});
int result = 0;
for (int i = 0; i < n; i++) {
if (area == 0) {
break;
}
if (area >= list.get(i)[1]) {
area -= list.get(i)[1];
result += list.get(i)[0] * list.get(i)[1];
} else {
result += list.get(i)[0] * area;
area = 0;
}
}
System.out.println(result);
}
}
๋ณ์)
n : ์์ ๊ฐ์
area : ์ ์ ๋ฉด์
v, a : ๊ฐ์น, ์์ ๋ฉด์
list : ์์ ์ ๋ณด๋ฅผ ๋ด๋ ArrayList
result : ์ต๋ ๊ฐ์น
์์ ๊ฐ์์ ์ ์ ๋ฉด์ ์ ์ ๋ ฅ๋ฐ๋๋ค. ์์ ๊ฐ์๋งํผ ์์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ArrayList์ ์ ์ฅํ๋ค. ArrayList๋ฅผ ๊ฐ์น๊ฐ ํฐ ์์๋๋ก, ๊ฐ์น๊ฐ ๊ฐ๋ค๋ฉด ๋ฉด์ ์ด ์์ ์์๋๋ก ์ ๋ ฌํ๋ค. ArrayList ์์๋๋ก ์ ์์ ๋ด์ ๊ฐ์น๋ฅผ ๊ตฌํ๋ค. ์ต์ข result๋ฅผ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 9844_Gecko (0) | 2026.04.02 |
|---|---|
| [Baekjoon] 30337_Linas ir mandarinai (0) | 2026.04.01 |
| [Baekjoon] 15287_Easy Quest (0) | 2026.03.30 |
| [Baekjoon] 9834_Card (0) | 2026.03.25 |
| [Baekjoon] 11270_Disastrous Downtime (0) | 2026.03.24 |