문제
https://www.acmicpc.net/problem/6068
6068번: 시간 관리하기
성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1<=N<=1000) 숫자를 매겼다. (우유를 짜고, 마굿간을 치우고, 담장을 고치는 등의) 존의 시간을 효율적
www.acmicpc.net
풀이
가장 늦게 끝나도 되는 일 순서로 배열을 정렬하고, 그리디를 이용해 현재 시간을 끝에서부터 줄여나갔다. 끝나는 시간이 현재 시간보다 더 작다면 현재 시간을 끝나는 시간으로 조정해줘야 한다.
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(in.readLine());
int[][] arr = new int[N][2];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(in.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o2[1] - o1[1];
}
});
int cur = arr[0][1];
for (int i = 0; i < N; i++) {
if (arr[i][1] < cur)
cur = arr[i][1];
cur -= arr[i][0];
if (cur < 0)
break;
}
System.out.println(cur < 0 ? -1 : cur);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ 백준] 17090 - 미로 탈출하기, Java(자바) (0) | 2023.03.04 |
---|---|
[BOJ 백준] 1991 - 트리 순회, Java(자바) (0) | 2023.03.04 |
[BOJ 백준] 7576 - 토마토, Java(자바) (0) | 2023.03.02 |
[BOJ 백준] 16988 - Baaaaaaaaaduk2 (Easy), Java(자바) (0) | 2023.03.02 |
[BOJ 백준] 13913 - 숨바꼭질 4, Java(자바) (0) | 2023.02.07 |