https://upload.acmicpc.net/30f339f9-285f-43ef-bdf1-6da563423866/
https://www.acmicpc.net/board/view/107317
글 읽기 - 제1회 보라매컵 예선 Open Contest 종료
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
※. 마감일이 빠른 작업부터 진행
※. 평시근무를 계산할 때 주말을 빼줘야한다. (토요일 day % 7 == 6, 일요일 day % 7 == 0)
※. 배열 10만, 마감일, 걸리는 시간도 10만이라 1~최대 마감일 로 반복문을 작성하면 더 쉽게 풀 수 있다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
class work implements Comparable<work>{
int day;
int time;
work(int day, int time) {
this.time = time;
this.day = day;
}
public int compareTo(work n) {
return Integer.compare(day, n.day);
}
}
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
ArrayList<work> list = new ArrayList<>();
for(int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list.add(new work(a,b));
}
Collections.sort(list);
boolean answer = false;
int useday = 0;
int outday = 0;
int weekday = 0;
for(work wk : list) {
weekday = (wk.day / 7) * 2;
if(wk.day % 7 == 6) weekday++;
int working = wk.day - useday - weekday;
if(wk.time > working) {
useday += working;
int task = wk.time - working;
int outwork = wk.day - outday;
if(task > outwork) answer = true;
outday += task;
}
else {
useday += wk.time;
}
}
if(answer)
System.out.println(-1);
else
System.out.println(outday);
}
}
'백준' 카테고리의 다른 글
[백준] 27114 조교의 맹연습 [자바] (0) | 2023.01.12 |
---|---|
[백준] 27113 잠입 [자바] (0) | 2023.01.11 |
[백준] 26071 오락실에 간 총총이 [자바] (0) | 2022.12.03 |
[백준] 1647 도시 분할 계획 [자바] (0) | 2022.10.12 |
[백준] 10158 개미 [자바] (0) | 2022.09.08 |