Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Feb 20, 2025

🧷 문제 링크

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

🧭 풀이 시간

32분

👀 체감 난이도

✏️ 문제 설명

  • 길이 $N$인 배열 A가 있다.
  • Add연산을 한 번 하면, 어떤 원소에 대해, 좌우로 같은 값을 가지는 모든 원소에 1씩 더한다.
    (ex. {1,3,3,3,4} 에서 원소 3에 Add연산을 하면 {1,4,4,4,4}가 된다.)
  • 모든 수를 같게 하기 위한 연산의 최소 횟수를 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 스택
  • 그리디

  • 스택을 내림차순으로 관리한다. (monotone stack)
  • 만약 비내림차순인 관계가 스택에 들어오면, 적절한 Add연산으로 스택을 내림차순으로 만들어줄 수 있다.
  • 예를 들면, 지금 스택에 있는 수가 {6, 4, 4, 4, 2}이고 스택에 넣으려는 수가 5라고 가정하자.
  • 스택에 있는 수 중, 최솟값부터 Add연산을 수행해서 5까지 최적의 방법으로 올릴 수 있다. 작업을 마치면 스택은 {6, 5}가 된다.

⏳ 회고

  • 스택에서 수를 꺼낼 때 조건을 잘못 써줘서 틀렸다.
  • $N$제한이 더 큰 Hard버전 느낌의 문제를 옛날에 풀었었는데, 그리디 문제라 떠올리는게 여전히 쉽지 않았다.
    https://www.acmicpc.net/problem/13146

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