본문 바로가기
코딩테스트

[백준] 1263번 '시간 관리' - Java

by CuckooBird 2023. 7. 31.

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

 

1263번: 시간 관리

진영이는 캠프 조교를 온 후 효율적으로 시간 관리를 해야 한다는 것을 깨달았다. 진영이는 하루에 해야 할 일이 총 N개가 있고 이 일들을 편하게 1번부터 N번까지 차례대로 번호를 붙였다. 진영

www.acmicpc.net


문제


코드

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

public class Main {
	private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	
	public static void main(String[] args) throws IOException {
		int n = Integer.parseInt(bf.readLine());
		int[][] arr = new int[n][2];
		StringTokenizer st;
		for(int i = 0 ; i < n ; i++) {
			st = new StringTokenizer(bf.readLine());
			arr[i][0] = Integer.parseInt(st.nextToken());
			arr[i][1] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(arr, (o1, o2) -> {
			if(o1[1] == o2[1]) return o1[0]-o2[0];
			return o1[1]-o2[1];
		});
		
		int startTime = arr[0][1] - arr[0][0];
		int time = 0;
		boolean flag = false;
		for(int i = 0 ; i < n ; i++) {
			time += arr[i][0];
			if(arr[i][1] - time >= 0) {
				if(startTime > arr[i][1] - time) {
					startTime = arr[i][1] - time;
				}
				flag = true;
			}
			else {
				bw.write("-1");
				flag = false;
				break;
			}
		}
		if(flag) {
			bw.write(Integer.toString(startTime));
		}
		
		bf.close();
		bw.flush();
		bw.close();
	}
}

만약 A라는 일을 하다가 B라는 일을 하고 다시 A라는 일을 할 수 있다는 것을 생각하면서 풀어야했습니다.