https://www.acmicpc.net/problem/13904
์ฝ๋
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int[][] work = new int[N][2];
int maxScores = 0; //๊ณผ์ ์ ์ ์ต๋๊ฐ
int days = 0; // ๊ณผ์ ์งํํ ๋
for(int i=0; i<N; i++) {
work[i][0] = scan.nextInt(); // ๊ณผ์ ๋ง๊ฐ๊ธฐํ
work[i][1] = scan.nextInt(); // ๊ณผ์ ์ ์
}
// ๊ณผ์ ์ ์ ๋์์์ผ๋ก ์ ๋ ฌ
Arrays.sort(work, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o2[1], o1[1]);
}
});
int[] scores = new int[1001]; // ์ ์ N์ ๋ฒ์ - 1~1000
for(int i=0; i<N; i++) { // ๊ณผ์ ์ ์๊ฐ ๋์ ์
for(int j=work[i][0]; j>0; j--) { // ๊ณผ์ ์ ๋ง๊ฐ์ผ๋ก๋ถํฐ ์ต๋ํ ๋ฆ๊ฒ ๊ณผ์ ํ๊ธฐ
if(scores[j] == 0) {
scores[j] = work[i][1];
break;
}
}
}
/*
for(int i=0; i<N; i++) {
System.out.print(work[i][0] + " " + work[i][1]);
System.out.println();
}
*/
for(int i=0; i<scores.length; i++)
maxScores += scores[i];
System.out.println(maxScores);
scan.close();
}
}
ํ์ด
์ด์ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ์๊ฐ์ด ์์ด์ ๋ด์ผํ๊ธฐ๋ก ํ๊ณ ๋๋จธ์ง ํ์๋๋ฐ,, ์ฌ์ค ๋ฌธ์ ์ ๋ํ ์ ๊ทผ๊ณผ ํด๊ฒฐ๋ฒ์ ๊ฐ๋จํ๋๋ฐ ์ด๋ป๊ฒ ๊ตฌํํ ์ง์ ๋ํด ์ข ์ ๋ฅผ ๋จน์๋ค.
๋ฌธ์ ์์ ํ๋ฃจ์ ๊ณผ์ ๋ ํ๋๋ง ํ ์ ์๊ณ , ๊ณผ์ ๋ง๋ค ๋ง๊ฐ์ผ์ด ์๋๋ฐ ๊ฐ์ฅ ์ ์๋ฅผ ๋ง์ด ๋ฐ์ ์ ์๋๋ก ๊ณผ์ ๋ฅผ ์ํํด์ผ ํ๋ค. ๊ณผ์ ์ ์์ ์ต๋๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
๋ฌธ์ ์ ์ ๊ทผ & ํด๊ฒฐ์ ๊ฐ๋จํ๋ค.
1) ๋ฌธ์ ๋ณ๋ก ๊ณผ์ ์ ์๊ฐ ๋์์์ผ๋ก ์ ๋ ฌํ๋ค.
2) ๊ณผ์ ์ ์๊ฐ ๋์์์ผ๋ก ์ ๋ ฌ๋์์ผ๋ฉด, ๋ง๊ฐ์ผ์ด ๋ง์ด ๋จ์๊ฑด ๊ฐ์ฅ ๋ฆ๊ฒ ๋๋ด์ผํ๋ค.
์ ๋๊ฐ๊ฐ ๋์ด๋ค.
๋ฌธ์ ์ ๊ฐ์ด ์ ๋ ฅํ๊ณ , ๊ณผ์ ์์ผ๋ก ์ ๋ ฌํ๋ฉด ์ ํฐ์๊ณผ ๊ฐ์ด ๋์จ๋ค.
์ด๋ ์ต๋๊ฐ์ 60 + 50 + 40 + 30 + 5๊ฐ ๋๋๋ฐ, ๋ง๊ฐ์ผ์ด ๋จ์ ๊ณผ์ (4์ผ)์ ๊ฐ์ฅ ๋ง์ง๋ง์,
๋ง๊ฐ์ผ์ด ์๋ฐํ ๊ณผ์ (2์ผ, 3์ผ)์ ๊ฐ๋ฅํ ๋นจ๋ฆฌ ๊ณผ์ ๋ฅผ ํด์ผํ๋ค.
์ผ๋จ ๊ณผ์ ์ ์๊ฐ ๊ฐ์ฅ ๋๊ฒ ๋์ค๋ ค๋ฉด, ๊ณผ์ ์ ์๊ฐ ๊ฐ์ฅ ๋์์์ผ๋ก ๊ณผ์ ๋ฅผ ํด์ผํ๋ค.
๋ฐ๋ผ์ ๊ณผ์ ์ ์๊ฐ ๋์์์ผ๋ก ๋ง๊ฐ์ผ์ ์ต๋ํ ๊ฐ๊น๊ฒ ํ์์ ์ผ๋ก ๋ฃ์ด์ค๋ค.
์ฒซ ๋ฒ์งธ ์ ๋ ฌ๋ ์ ๋ ฅ๋ถํฐ ๋ณด์.
๋ง๊ฐ์ผ - 4์ผ , ์ ์ - 60์
์ด ๊ณผ์ ๋ 4์ผ์งธ ๋๋ด๋๋ก ์ค์ ํ๋ค. scores[4] = 60
๋ ๋ฒ์งธ ๋์ ์ ์์ ๊ณผ์ ๋ฅผ ๋ณด์.
๋ง๊ฐ์ผ - 2์ผ , ์ ์ - 50์
์ด ๊ณผ์ ๋ 2์ผ์งธ ๋๋ด๋๋ก ์ค์ ํ๋ค. scores[2] = 50
์ธ ๋ฒ์งธ ๋์ ์ ์์ ๊ณผ์ ๋ฅผ ๋ณด์.
๋ง๊ฐ์ผ - 4์ผ , ์ ์ - 40์
์ด ๊ณผ์ ๋ฅผ 4์ผ์งธ ๋๋ด๋ ค๊ณ ํ์ผ๋, ์ด๋ฏธ 4์ผ์งธ ๋๋ด๊ธฐ๋กํ ๊ณผ์ ๊ฐ ์กด์ฌํ๋ค.
๋ฐ๋ผ์ ์ด ๊ณผ์ ๋ ๋ง๊ฐ์ผ์ ์ต๋ํ ๊ฐ๊น๊ฒ 3์ผ์ ๋๋ด์ฃผ๋๋ก ํ๋ค. scores[3] = 40
๋ค ๋ฒ์งธ ๋์ ์ ์์ ๊ณผ์ ๋ฅผ ๋ณด์.
๋ง๊ฐ์ผ - 3์ผ , ์ ์ - 30์
์ด ๊ณผ์ ๋ฅผ 3์ผ์งธ ๋๋ด๋ ค๊ณ ํ์ผ๋, ์ด๋ฏธ 3์ผ์งธ๋ ๋๋ด๊ธฐ๋ก ํ ๊ณผ์ ๊ฐ ์กด์ฌํ๋ค.(scores[3] = 40)
๊ทธ๋์ ์ด ๊ณผ์ ๋ฅผ 2์ผ์งธ์ ๋๋ด๋ ค๊ณ ํ์ผ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์กด์ฌํ๋ค.(scores[2] = 50)
๋ฐ๋ผ์ ์ด ๊ณผ์ ๋ฅผ ์ฒซ๋ฒ์งธ ๋ ์ ๊ฐ์ฅ ๋จผ์ ํ๋ค. scores[1] = 30
๋ค์ฏ ๋ฒ์งธ ๋์ ์ ์์ ๊ณผ์ ๋ฅผ ๋ณด์.
๋ง๊ฐ์ผ - 1์ผ , ์ ์ - 20์
์ด ๊ณผ์ ๋ ๋ฌด์กฐ๊ฑด ์ฒซ๋ฒ์งธ๋ ์๋ง ํ ์ ์์ผ๋, ์์์ ์ฒซ๋ฒ์งธ๋ ์ ํ ์ ์๋ ๊ณผ์ ์ค ์ต๋์ ์๋ 30์ ์ด๋ค. ๋ฐ๋ผ์ ํจ์ค
์ฌ์ฏ ๋ฒ์งธ ๋์ ์ ์์ ๊ณผ์ (๋ง๊ฐ์ผ - 4์ผ , ์ ์ - 10์ ) ๋ง์ฐฌ๊ฐ์ง ํจ์คํ๋ค.
๋ง์ง๋ง ์ ์
๋ง๊ฐ์ผ - 6์ผ , ์ ์ - 5์
6์ผ์งธ์ ๋ ์๋ฌด ๊ณผ์ ๋ ํ์ง์์ผ๋ฏ๋ก ์ด ๊ณผ์ ๋ฅผ ํ๋ฉด๋๋ค. scores[6] = 5
๋ฐ๋ผ์ ์ต๋์ ์๋ 60 + 50 + 40 + 30 + 5 = 185์ ์ด ๋๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1966๋ฒ: ํ๋ฆฐํฐ ํ(๊ตฌํ, ํ) (0) | 2020.03.24 |
---|---|
[Codeforces] 1191A: Tokitsukaze and Enhancement (0) | 2020.03.24 |
[Codeforces] 1300A: Non-zero (0) | 2020.03.21 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)๋ ๋งต๊ฒ(Heap) (0) | 2020.03.20 |
[๋ฐฑ์ค] 3085๋ฒ: ์ฌํ ๊ฒ์(์์ ํ์) (2) | 2020.03.19 |
๋๊ธ