Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 20, 2025

🧷 문제 링크

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

🧭 풀이 시간

35분
image

👀 체감 난이도

✏️ 문제 설명

N마리의 라이프가드 소가 있다.
i번째 소는 시각 L[i]에 근무를 시작해서 R[i]에 근무를 마친다.

정확히 한 마리의 소를 해고하려고 할 때, 해고된 이후의 전체 근무 시간을 최대화 해보자.
전체 근무 시간이란, 적어도 한 마리의 소가 근무하고 있는 시간을 의미한다.

🔍 풀이 방법

[사용한 알고리즘]

  • 스위핑
  • TreeSet

N마리의 소에 의해서 이벤트가 발생하는 (소가 출근 or 퇴근하는) 시점은 최대 2N개 뿐이다.
시간 순서대로 이벤트를 정렬시키고, 시간 축을 스위핑하며 TreeSet에 근무 중인 소들을 모두 넣어놓는다.
이 TreeSet의 size가 1일 때, 해당 소가 해고되면 근무가 터지게 된다. -> 각 소가 해고되었을 때의 펑크나게 되는 시간을 따로 배열에 저장해놓는다.

스위핑이 끝나면, 마지막에 이 배열을 한 번 돌며 최솟값을 찾아주면 된다.

⏳ 회고

...

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Mar 20, 2025
@ShinHeeEul ShinHeeEul merged commit ff8d67b into main Mar 20, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants