728x90
N명의 구조요원이 있을 때 각각 일을 하는 시간이 주어집니다.
1명의 구조요원을 해고했을 때 처리 가능한 최대 시간을 구하는 문제입니다.
각각의 구조요원이 처리하는 시간을 배열에 저장해줍니다.
만약 30~40일 경우, time[30]++; time[31]++; ... time [39]++;
한명이라도 처리하는 곳이 있다면 해당 배열의 값은 1이상 입니다.
해당 배열의 값이 2이상이라면 2명이상이 처리하는 곳입니다.
모든 구조요원이 처리하는 시간을 확인해서 해당 배열의 값이 1이하인 곳을 카운트해줍니다.
카운트 한 값이 가장 작은 값을 출력해주었습니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
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 Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int[] time = new int[1001];
int[][] arr = new int[n][2];
int total = 0;
for(int i=0; i<n; ++i) {
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
for(int j=arr[i][0]; j<arr[i][1]; ++j) {
if(time[j] == 0) {
++total;
}
++time[j];
}
}
int cnt = 987654321;
for(int i=0; i<n; ++i) {
int c = 0;
for(int j=arr[i][0]; j<arr[i][1]; ++j) {
if(time[j]<=1) {
++c;
}
}
cnt = Math.min(cnt, c);
}
bw.write(total - cnt + "");
bw.close();
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 1987번 알파벳 (0) | 2023.02.25 |
---|---|
[Java] 백준 13023번 ABCDE (0) | 2023.02.25 |
[Java] 백준 17135번 캐슬 디펜스 (0) | 2023.02.24 |
[Java] 백준 1759번 암호 만들기 (0) | 2023.02.23 |
[Java] 백준 2644번 촌수계산 (0) | 2023.02.23 |