Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.3 KB

시간관리하기_6068.md

File metadata and controls

47 lines (35 loc) · 1.3 KB

[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;
    }
}