Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Aug 2, 2025

🧷 문제 링크

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

🧭 풀이 시간

50분

👀 체감 난이도

✏️ 문제 설명

N*N크기의 2차원 격자가 있고, 각 칸에는 정수 a[i][j]가 적혀있다.
칸 (i,j)에서 기술을 사용하면 (i,j) ~ (i+K-1, j+K-1) 범위의 정사각형 내에서 a의 최댓값을 찾아 그만큼 점수를 올릴 수 있다.

모든 칸에서 기술을 한 번씩 사용할 때, 점수가 R 이상이 되도록 하기 위한 K의 최솟값을 구해보자.

🔍 풀이 방법

  • 이분 탐색

K값이 점점 늘어날 수록, 각 점에서 기술을 사용할 때 얻는 점수는 줄어들지 않는다.
-> K를 이분 탐색으로 찾을 수 있다.

각 행, 열별로 최댓값을 저장하는 배열 row, col를 정의했다.
row[i][j] = max(A[i][j] ~ A[i][j+K-1])
col[i][j] = max(A[i][j] ~ A[i+K-1][j])

이걸 빠르게 구하기 위해, + 슬라이딩 윈도우를 사용했다.

그러면 (i, j)칸에서 얻을 수 있는 점수는 max(row[i][j] ~ row[i+K-1][j], col[i][j] ~ col[i][j+K-1]) 이 된다.
이것도 덱 + 슬라이딩 윈도우로 똑같이 구할 수 있다.

구한 점수가 R 이하인지에 따라 이분 탐색의 범위를 좁혀주었다.

⏳ 회고

덱 너무 어렵다

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