PS

백준 2457. 공주님의 정원

tose33 2023. 1. 7. 15:41

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

 

2457번: 공주님의 정원

첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서,

www.acmicpc.net

 

방법을 알면 정말 쉽지만 생각이 안나면 정말 어려운 그리디 문제.

 

주어진 꽃들을 피는 날짜 기준 오름차순 정렬한다.

우리가 필요한건 3.1 ~ 11.30 까지 하루도 빠짐없이 꽃이 피도록 하는 것이다.

 

1. 그럼 우선 먼저 해야할건 3.1 이전에 피는 꽃들을 살펴봐야 한다.

그런 꽃들 중 지는 기간이 가장 긴 꽃을 고른다.

고른 꽃의 지는 날짜를 저장한다. flowerEnd 라고 해보자.

 

2. 하루라도 꽃이 안피면 안되기 때문에 꽃들 중 flowerEnd 날 보다 피는 날이 작거나 같은 꽃들을 살펴본다.

마찬가지로 그런 꽃들 중 지는 기간이 가장 긴 꽃을 고른다.

flowerEnd를 갱신한다.

 

1~2를 반복하고 만약 마지막에 flowerEnd가 11.30 보다 작거나 같다면 3.1~11.30일 모든 날에 꽃이 피는 것이 불가능한것이다.

 

기간과 기간 사이 조건을 정말 잘 생각해봐야 하는 문제 부등호를 조심하자.