Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 6, 2025

🧷 문제 링크

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

🧭 풀이 시간

15분

👀 체감 난이도

✏️ 문제 설명

  • 앞으로 1일부터 $n$일까지 총 $n$일동안 일을 할 수 있고, 각 날의 일급은 $T_i$로 정해져 있다.
  • 한 번 일을 시작하고 끝내면 다시 일을 시작할 수 없고, 일을 한 날 중 가장 적은 일급을 기준으로 모든 급여를 지급한다.
  • 돈을 최대 얼마나 벌 수 있는지 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 정렬
  • 분리 집합

  • 일을 한 날을 기준으로 탐색하면 $O(N^2)$이라 시간 초과가 난다.
    => 급여를 기준으로 잡아보자.
  • $i$번째 날의 급여 $T_i$가 기준 급여가 되는 경우, $i$로부터 양쪽으로 최대한 멀리 뻗어나갔을 때의 길이를 곱해서 이익을 구할 수 있다.
  • 이렇게 구한 이익들 중 최댓값을 구하면 된다.
  • 양쪽으로 뻗어나가는 것을 효율적으로 처리하기 위해 급여 기준 정렬 후에 분리 집합을 사용한다.

⏳ 회고

얼마 전에 풀었던 거랑 거의 같다

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Mar 6, 2025
@ShinHeeEul ShinHeeEul merged commit d2ef4f3 into main Mar 6, 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