Problem Solving/Baekjoon
[백준] 1263 시간 관리 - Greedy / Java
graycode
2023. 4. 15. 13:04
• 문제 링크
1263번: 시간 관리
진영이는 캠프 조교를 온 후 효율적으로 시간 관리를 해야 한다는 것을 깨달았다. 진영이는 하루에 해야 할 일이 총 N개가 있고 이 일들을 편하게 1번부터 N번까지 차례대로 번호를 붙였다. 진영
www.acmicpc.net
• 풀이 과정
소요시간 t 와 마감시간 s 를 입력받아 s 를 기준으로 내림차순 정렬하고,
최대 마감시간에서 각각의 소요시간을 빼되, 각 업무의 마감 시간을 고려하여 time 을 갱신한다.
위를 수행한 후 time 이 0보다 작으면 -1 을, 아니라면 해당 값을 출력한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
Pair[] arr = new Pair[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
arr[i] = new Pair(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
Arrays.sort(arr);
int time = arr[0].s;
for (int i = 0; i < n; i++)
time = Math.min(time, arr[i].s) - arr[i].t;
bw.write(String.valueOf(Math.max(time, -1)));
bw.flush();
}
private static class Pair implements Comparable<Pair> {
int t, s;
public Pair(int t, int s) {
this.t = t;
this.s = s;
}
@Override
public int compareTo(Pair o) {
return o.s != this.s ? o.s - this.s : o.t - this.t;
}
}
}