728x90
반응형
https://www.acmicpc.net/problem/2123
모든 몸무게의 합 - 본인 몸무게 - 본인 힘으로 위험도들을 모은 후, 정렬한 다음 탑 쌓아가면서 최대 위험도를 구하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[n][2];
int weightSum = 0;
for(int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
weightSum += arr[i][0];
}
Node[] dangers = new Node[n];
for(int i = 0; i < n; i++) {
dangers[i] = new Node(i, weightSum - arr[i][0] - arr[i][1]);
}
Arrays.sort(dangers);
int answer = dangers[0].danger;
int num = arr[dangers[0].idx][0];
for(int i = 1; i < n; i++) {
answer = Math.max(answer, dangers[i].danger - num);
num += arr[dangers[i].idx][0];
}
System.out.print(answer);
}
}
class Node implements Comparable<Node> {
int idx, danger;
public Node(int idx, int danger) {
this.idx = idx;
this.danger = danger;
}
@Override
public int compareTo(Node o) {
return this.danger - o.danger;
}
}
728x90
반응형
'백준 > 1 - 5000' 카테고리의 다른 글
[백준] 2325번 : 개코전쟁 (0) | 2024.12.08 |
---|---|
[백준] 3135번 : 라디오 (0) | 2024.11.13 |
[백준] 2785번 : 체인 (0) | 2024.11.09 |
[백준] 1715번 : 카드 정렬하기(JAVA) (0) | 2021.10.29 |
[백준] 2075번 : N번째 큰 수(JAVA) (0) | 2021.10.25 |
댓글