forked from sowon-dev/AlgorithmStudy_Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLuckBalance.java
More file actions
53 lines (44 loc) ยท 1.85 KB
/
LuckBalance.java
File metadata and controls
53 lines (44 loc) ยท 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package hackerrank;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class LuckBalance {
static int luckBalance(int k, int[][] contests) {
// contests์์ ๊ฐ ๋ํ๊ฐ ์ค์ํ๋ฉด 1์ด๊ณ ์ค์ํ์ง ์์ผ๋ฉด 0์ด๋ค.
// k๋ ์ค์ํ ๋ํ์์ ์ง ์ ์๋ ํ์์ด๋ค.
// contests์์ ์ง๋ฉด ํ์ด์ด ๋์์ง๊ณ ์ด๊ธฐ๋ฉด ํ์ด์ด ๋ฎ์์ง๋ค.
// k๋งํผ์ง๋์ ์ต๋ ํ์ด์ด ์ผ๋ง์ธ์ง ๊ตฌํ๋ ๋ฌธ์
int maxLuck = 0;
int important = 0;
List<Integer> luckList = new ArrayList<>();
for (int i = 0; i < contests.length; i++) {
if (contests[i][1] == 1) { //์ค์ํ ๋ํ๋ฉด luckList์ ๋ด๊ธฐ
important++;
luckList.add(contests[i][0]);
} else { //์ค์ํ์ง ์์ ๋ํ๋ค์ ๋ฐ๋ก maxLuck์ ๋์ ํฉ
maxLuck += contests[i][0];
}
}
//์ค์ํ๋ํ๋ง luckList ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
Collections.sort(luckList);
// System.out.println("luckList: " + luckList);
//๊ฐ์ฅ ๋ฎ์ ํ์ด์ ๊ฐ์ง ๋ํ maxLuck์์ ๋นผ์ค๋ค.
int ableToLose = important - k;
for (int i = 0; i < ableToLose; i++) {
maxLuck -= luckList.remove(0); //๊ฐ์ฅ ๋ฎ์ ํ์ด ๋นผ๊ธฐ
}
// System.out.println("luckList: " + luckList + " , ableToLose: " + ableToLose);
//๊ฐ์ฅ ๋์ ํ์ด์ ๊ฐ์ง ๋ํ๋ฅผ maxLuck์ ๋ํด์ค๋ค.
for (int i = 0; i < luckList.size(); i++) {
maxLuck += luckList.get(i);
}
return maxLuck;
}
public static void main(String[] args) {
int[][] contests1 = {{5, 1}, {1, 1}, {4, 0}};
int[][] contests2 = {{5, 1}, {2, 1}, {1, 1}, {8, 1}, {10, 0}, {5, 0}};
System.out.println(luckBalance(2, contests1) + ", ans: 10");
System.out.println(luckBalance(1, contests1) + ", ans: 8");
System.out.println(luckBalance(3, contests2) + ", ans: 29");
}
}