문제 링크
풀이
그리디로 풀 수 있다.
현재 가지고 있는 꽃이 죽기 전에 피고, 가장 오랫동안 살아있는 꽃을 고르면 된다.
날짜는 구현의 편의를 위해 달에 100을 곱하고 일을 더했다. ex) 2월 28일 = 228
문제를 읽자마자 그리디일거같았지만 구현하는데 시간이 꽤 걸렸다.
코드
#include <cstdio>
#include <algorithm>
using namespace std;
pair<int, int> arr[100005];
int main() {
int n; scanf("%d", &n);
for (int i = 0; i < n; i++) {
int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d);
arr[i] = {100 * a + b, 100 * c + d};
}
sort(arr, arr + n);
int cur = 301, idx = 0, ans = 0, M = -1e9;
while (cur <= 1130) {
for (int i = idx; i < n; i++) {
auto &[s, e] = arr[i];
if (s > cur) break;
if (e > M) {
M = e;
idx = i;
}
}
if (M != cur) {
cur = M;
ans++;
} else {
printf("0");
return 0;
}
}
printf("%d", ans);
}
'Algorithm > BOJ' 카테고리의 다른 글
백준[14500] 테트로미노 (0) | 2021.10.13 |
---|---|
백준[20551] Sort 마스터 배지훈의 후계자 (0) | 2021.10.11 |
백준[2800] 괄호 제거 (0) | 2021.10.07 |
백준[2015] 수들의 합 4 (0) | 2021.10.05 |
백준[13976] 타일 채우기 2 (0) | 2021.10.05 |