๐ ๋ฌธ์
13904๋ฒ: ๊ณผ์
์์ ์์ ๋ค์ฏ ๋ฒ์งธ, ๋ค ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ฒซ ๋ฒ์งธ, ์ผ๊ณฑ ๋ฒ์งธ ๊ณผ์ ์์ผ๋ก ์ํํ๊ณ , ์ธ ๋ฒ์งธ, ์ฌ์ฏ ๋ฒ์งธ ๊ณผ์ ๋ฅผ ํฌ๊ธฐํ๋ฉด 185์ ์ ์ป์ ์ ์๋ค.
www.acmicpc.net
๐ ์์ด๋์ด
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐํ์์ต๋๋ค.
ํด๋น ๋ฌธ์ ๋ ๊ณผ์ ์ ๋ง๊ฐ์ผ๊ณผ ๊ณผ์ ์ ์ ์๋ฅผ ์ฃผ๊ณ ์ต๋ ์ป์ ์ ์๋ ๊ณผ์ ์ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค.
์ ์ ๊ฒฝ์ฐ๋ ๋ณดํต์ ๊ทธ๋ฆฌ๋์ ๊ฐ์ ๋ฌธ์ ์ธ์ค ์๊ณ ๋จผ์ ๋ฐฐ์ด์ ๋ง๊ฐ์ผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ ์ฐจ์ ์ ๋ ฌํ์์ต๋๋ค.
๊ทธ ์ดํ์ ๋ง๊ฐ์ผ์ ๋๋ฉด์ ํด๋น ๋ง๊ฐ์ผ ์์ ํด๊ฒฐํ ์ ์๋ ๊ณผ์ ๋ค์ด ์๋ ๊ฒฝ์ฐ ์ฐ์ ์์ ํ์ ๋ฃ๊ณ
ํ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๋ ์์ ํด๊ฒฐ ํ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์์ผ๋ก ์ ์๊ฐ ๊ฐ์ฅ ํฐ ๊ฒ์ ๋ฆฌํดํ๋๋ก ํ์์ต๋๋ค.
ํ์ง๋ง ์์ ์ถ๋ ฅ ๊ฐ๊ณผ ๋ฌ๋ผ ๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์ด๋ณด๋ ๋ง๊ฐ์ผ ๋ด์ ํด๊ฒฐํ ์ ์๋ ๊ณผ์ ๋ค์์ ํ๋ฒ ๋ ์ธ์ง ํ์์ต๋๋ค.
์ฆ ๋ง๊ฐ์ผ์ด 6์ผ์ฐจ ๊น์ง ๊ฐ๋ฅํ๋ค๋ฉด ํด๋น ๊ณผ์ ๋ 1~6์ผ ์ฐจ ์ด๋ด์๋ง ํด๊ฒฐํ๋ฉด ๋๋ ๊ณผ์ ์ ๋๋ค.
๋ฐ๋ผ์ ์์์ ํ์ดํ์๋ ๋ฐฉ๋ฒ์ ์ญ์์ผ๋ก ๋ฐฐ์ด์ ๋ง๊ฐ์ผ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์์ต๋๋ค.
์ดํ์๋ ํฌ๋ฌธ์ ๊ฐ์ฅ ๋๋ํ๋ ๋ง๊ฐ์ผ๋ถํฐ 1์ผ๊น์ง ๋๋ฉฐ ํด๋น ๋ง๊ฐ์ผ ๋ด์ ํด๊ฒฐํ ์ ์๋ ๊ณผ์ ๋ค์ ํ์ ๋ฃ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์์ ์ ์๋ฅผ ๊ฐ์ฅ ๋ง์ด ์ฃผ๋ ๊ณผ์ ๋ฅผ ์ฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ ๊ฐ ๋ ์ง๋ณ๋ก ๊ฐ์ฅ ํฐ ์ ์๋ฅผ ์ป์ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋์ต๋๋ค.
์์)
submit day | 1 | 2 | 3 | 4 | 4 | 4 | 6 |
score | 20 | 50 | 30 | 10 | 40 | 60 | 5 |
์ ๋ ฅ | queue์ ์ํ |
7 4 60 4 40 1 20 2 50 3 30 4 10 6 5 |
![]() |
๐ ํ์ด
package ๋ฐฑ์ค.greedy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class boj_13904_๊ณผ์ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int line = Integer.parseInt(br.readLine());
int maxDay = 0;
int[][] arr = new int[line][2];
for (int i = 0; i < line; i++) {
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
maxDay = Math.max(maxDay, arr[i][0]);
}
Arrays.sort(arr, ((o1, o2) -> o2[0] - o1[0])); //๋ ์ง๊ฐ ๋ง์ ์์ผ๋ก(๋ง๊ฐ๊ธฐํ์ด ๋๋ํ ์์๋๋ก)
PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> o2[1] - o1[1]); //์ ์๊ฐ ๋์ ์์ผ๋ก
int idx = 0;
int score = 0;
for (int day = maxDay; 0 < day; day--) {
while (idx < line && arr[idx][0] == day) {
pq.add(arr[idx++]);
}
if (!pq.isEmpty()) {
// System.out.println("์ ํ" + Arrays.toString(pq.peek()));
score += pq.poll()[1];
}
}
System.out.println(score);
}
}
'๋ฐฑ์ค(boj)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA]19236 ์ฒญ์๋ ์์ด, ๊ณจ๋2 ์๋ฎฌ๋ ์ด์ (0) | 2023.06.30 |
---|---|
[JAVA]1189 ์ปด๋ฐฑํ, ์ค๋ฒ1 (0) | 2023.06.30 |
[JAVA]1002 ํฐ๋ , ๋ด์ ๊ณผ ์ธ์ (0) | 2023.06.23 |
[JAVA]14567 ์ ์ ๊ณผ๋ชฉ (์์์ ๋ ฌ ์ ๋ฌธ ์ถ์ฒ) (0) | 2023.06.17 |
[JAVA]14676 ์์ฐ๋ ์ฌ๊ธฐ๊พผ? ์์์ ๋ ฌ ๊ณจ๋3 (0) | 2023.06.15 |