반응형
https://www.acmicpc.net/problem/19622
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 256 MB | 311 | 148 | 105 | 43.388% |
문제
서준이는 아빠로부터 N개의 회의와 하나의 회의실을 선물로 받았다. 각 회의는 시작 시간, 끝나는 시간, 회의 인원이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, 회의는 한번 시작되면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간은 끝나는 시간보다 항상 작다. N개의 회의를 회의실에 효율적으로 배정할 경우 회의를 진행할 수 있는 최대 인원을 구하자.
입력
첫째 줄에 회의의 수 N이 주어진다. 둘째 줄부터 N + 1 줄까지 공백을 사이에 두고 회의의 시작시간, 끝나는 시간, 회의 인원이 주어진다.
출력
첫째 줄에 회의실에서 회의를 진행할 수 있는 최대 인원을 출력한다.
제한
- 1 ≤ N ≤ 100,000
- 임의의 회의 K(1≤ K ≤ N)는 회의 K − 1과 회의 K + 1과는 회의 시간이 겹치고 다른 회의들과는 회의 시간이 겹치지 않는다.
- 모든 회의의 시작 시간과 끝나는 시간은 231 − 1보다 작거나 같은 자연수 또는 0이다.
- 모든 회의의 시작 시간과 끝나는 시간은 서로 다르다.
- 회의 인원은 1,000보다 작거나 같은 자연수 이다.
예제 입력 1
6
10 40 80
30 60 60
50 80 70
70 100 100
90 120 40
110 140 50
예제 출력 1
230
코드
/*
회의실 배정 3
DP
dp[i] : i번째 회의까지 진행했을 때의 최대 인원
*/
import java.io.*;
import java.util.*;
public class p19622 {
static class Meeting {
int s, e, total;
public Meeting(int s, int e, int total) {
this.s = s;
this.e = e;
this.total = total;
}
}
static int n;
static Meeting[] meet;
static int[] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
meet = new Meeting[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
int total = Integer.parseInt(st.nextToken());
meet[i] = new Meeting(start, end, total);
}
dp = new int[n];
int answer = -123456789;
dp[0] = meet[0].total;
if (n >= 1) {
answer = dp[0];
}
if (n >= 2) {
dp[1] = meet[1].total;
}
for (int i = 2; i < n; i++) {
// i번째에서의 최대인원은 i번째 회의실 총원 + 그 전까지 회의를 진행한 인원 수
dp[i] = meet[i].total + answer;
answer = Math.max(answer, dp[i - 1]);
}
answer = Math.max(answer, dp[n - 1]);
System.out.println(answer);
}
}
반응형
'알고리즘 > [ Baekjoon ]' 카테고리의 다른 글
[ BOJ ][JAVA][11170] 0의 개수 (0) | 2021.05.24 |
---|---|
[ BOJ ][JAVA][3187] 양치기 꿍 (0) | 2021.05.24 |
[ BOJ ][JAVA][10775] 공항 (0) | 2021.05.20 |
[ BOJ ][JAVA][7682] 틱택토 (0) | 2021.05.20 |
[ BOJ ][JAVA][3184] 양 (0) | 2021.05.20 |