(BOJ) 6068 g5 시간 관리 _Java

BAEKJOON 6068 Gold Ⅴ 시간관리 자바

1. 종료 시간순 정렬

2. 오늘까지 시간 관리가 가능한지 확인

3. 작업 시작에 걸리는 시간 절약

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String() args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        Todo() input = new Todo(N);
        StringTokenizer st = null;
        for (int i=0; i<N; i++) {
            st = new StringTokenizer(br.readLine());
            int t = Integer.parseInt(st.nextToken());
            int s = Integer.parseInt(st.nextToken());
            Todo todo = new Todo(t, s);
            input(i) = todo;
        }
        Arrays.sort(input, new Comparator<Todo>() {
            @Override
            public int compare(Todo o1, Todo o2) {
                return o1.s==o2.s ? o2.t-o1.t : o1.s-o2.s;
            }
        });

        int answer = Integer.MAX_VALUE;

        int prev = 0;
        for (int i=0; i<N; i++) {
            int curr = prev + input(i).t;
            if (input(i).s<curr) {
                answer = -1;
                break;
            }
            answer = Math.min(answer, input(i).s-curr);
            prev = curr;
        }

        System.out.println(answer);
    }
    static class Todo {
        int t, s;
        Todo (int t, int s) {
            this.t = t;
            this.s = s;
        }
    }
}

https://www.acmicpc.net/problem/6068

6068번: 시간 관리

열심히 일하는 농부 John은 시간을 효율적으로 관리하는 법을 배웠습니다. 그는 N개의 작업에 번호를 매겼습니다(1<=N<=1000). John의 시간을 효율적으로 사용합니다(우유 우유, 마구간 청소, 울타리 수리 등).

www.acmicpc.net