⏰ [6068] 시간 관리하기
난이도: 골드 5
소요 시간: 16분
메모리: 18244KB
시간: 228ms
- 정렬 후에 체크만 해주면 되는 그리디 문제라, 골드문제임에도 어렵지 않았다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main_6068_시간관리하기 {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine().trim());
int[][] todo = new int[N][2];
for (int n = 0; n < N; n++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
todo[n][0] = Integer.parseInt(st.nextToken());
todo[n][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(todo, (o1, o2) -> Integer.compare(o2[1], o1[1]));
System.out.println(checkTime(todo, N));
}
static int checkTime(int[][] todo, int N) {
int time = todo[0][1] + 1;
for (int n = 0; n < N; n++) {
if (todo[n][1] < time) time = todo[n][1];
if ((time -= todo[n][0]) < 0) return -1;
}
return time;
}
}