https://www.acmicpc.net/problem/28357
28357번: 사탕 나눠주기
소수전공 수업을 마무리한 찬우는 축하의 의미로 학생들에게 사탕을 나누어 주려 한다. 구체적으로, 기준이 되는 음이 아닌 정수 $X$를 정한 뒤 최종 점수가 $X$점을 넘는 학생들에게 점수가 높은
www.acmicpc.net
간단한 이분탐색 문제였습니다.
최솟값과 최댓값 설정만 잘해주면 쉽게 풀릴것 같습니다.
def ch(x):#나눠줘야하는 사탕 개수 체크 함
re = 0
for i in s:
if i>x:
re+=(i-x)
return re
n,m = map(int,input().split())
s = list(map(int,input().split()))
a,b = 0,max(s)#점수의 최대값이 기준점의 최대값임
#사탕이 많으면 기준점 0으로 해도 됨.
while a<b:#최소가 최대와 같거나 넘겼을때 종료되게
mid = (a+b)//2#이분 탐색의 핵심 범위를 반으로 나눠줌.
midw = ch(mid)#나눈 결과값을 저장
if midw >m:#사탕이 부족하니 최소 점수를 올려줘야함.
a = mid+1
elif midw<=m:#사탕이 남으니까 최대 점수를 내려줘야함.
b = mid
print(a)#최소 점수컷 출력.
'백준 파이썬 코딩' 카테고리의 다른 글
백준 16567 바이너리 왕국 파이썬 반례 O (0) | 2023.07.28 |
---|---|
백준 28215 대피소 파이썬 (0) | 2023.07.22 |
백준 25917 Prime Arrangement 파이썬 증명 X (0) | 2022.11.09 |
백준 25919 Lost Edge 파이썬 최적화버전 (0) | 2022.11.07 |
백준 25919 Lost Edge 파이썬 (1) | 2022.11.07 |