260725. 지문 중요
-
이 내용이 중요하다

-
[0,3] , [3,1000] , [4,1] 이 있다고 한다면
-> [0,3] 동작 이후에 [4,1]은 push 불가능하다. 겹치지 않는다!
-
만약 그리디 문제라고 한다면
-> 최소시간을 위해서 [0,3] -> [4,1] -> [3,1000] 을 해야만한다.
그래서 코드에서 이게 나오는 이유다.

문제 해결 전략
- 1) 초기화는 가장 startTime 앞선거를 놓자.
- 2) 그 다음부터는 1번과 2번 작업을 넣을건데, 2번작업의 비용이 더 좋다.
아무리 1번이 앞선다고 하더라도, 걸리는 시간이 2번작업이 5ms이기 때문에 2번을 먼저 넣어야 한다.

중요! : 사용자 정의 함수.
- 3) 비교방식은 사용자 정의 함수를 만들어야 한다.
-> pq의 비교함수는 struct 구조로 해서 operator 함수를 만들어야 함.

문제해결전략
-
다시 돌아와서
-
4) 0번 입장에서 봤을때, 0~3 간격의 모든 startTime을 전부 넣어야 한다. 그래야만 , 다음에 작업한 작업을 선정할 수 있기 때문이다.
(문제에서도 힌트가 주어졌고, 반례를 만들면서 생각한 부분이다.)

-> 3을 벗어난거까지 넣어버리면, 최적화된 과정이 아니다. 다음에 생각해도 된다.
- 그래서 이러한 코드를 작성함.

중요 ! for 밖에서 선언.
- 비교하려는 인덱스는 계속 갱신해야 하므로, for문 외부에 선언을 했다.
그리고 계속 갱신하는 것이므로 for문을 이렇게 했는데,
-> 자주 사용을 하지 않아서 그렇지 어려운것은 아니다. 그냥 시작점만 없애면 됨.

문제해결 전략
- 다시 돌아와서
- 5) 마지막의 이 부분은 1번 작업이 8부터 시작하는 //
이러한 경우를 처리하기 위함이다.
