Koala - 18기/코딩테스트 심화 스터디
[백준 / python ] 17951 흩날리는 시험지 속에서 내 평점이 느껴진거야
beans3142
2025. 4. 13. 04:24
문제
https://www.acmicpc.net/problem/17951
알고리즘
매개변수탐색
풀이
구간을 나눌 기준을 매개변수로 두고, 그 기준보다 커지면 그룹으로 나누는 방식으로 진행하면 된다.
그룹의 개수가 많다면 기준치를 높여서 줄이는 방향으로, 적다면 기준치를 낮춰서 늘리는 방향으로 진행한다 생각하면 조금 편하다.
코드
inf=10**10
def solve():
n,k=map(int,input().split())
arr=list(map(int,input().split()))
ans=parametric_search(n,k,arr)
print(ans)
def parametric_search(n,k,arr):
mn=0
mx=inf
ans=0
while mn<=mx:
mid=(mn+mx)//2
cnt,res=check(mid,arr)
if cnt>=k:
ans=max(res,ans)
mn=mid+1
else:
mx=mid-1
return ans
def check(mid,arr):
nowsum=0
res=inf
groupcnt=0
for i in arr:
nowsum+=i
if mid<=nowsum:
res=min(res,nowsum)
groupcnt+=1
nowsum=0
return groupcnt,res
solve()