오랜만에 이진탐색 코드를 좀 풀어보려고 하는데
계속 시간초과가 난다..
4년전의 나와 지금의 나는 여전히... ㅋㅋ
아니 근데 도저히 납득이 안됐다.
그래서 알아보니 python 으로 제출하면 시간초과가 난다는 것이다.
그래서 pypy3로 제출하니.. 시간초과가 안난다 ㅋ
import sys
n,m = map(int, input().split())
v = list(map(int,sys.stdin.readline().split()))
start = 1
end = max(v)
answer =0
v.sort(reverse=True)
while start<=end:
mid = (start + end)//2
tsum = 0
for i in v:
if i-mid >0:
tsum+=i-mid
elif i-mid<=0:
break
if tsum == m:
answer = mid
break
elif tsum < m:
end = mid -1
elif tsum > m:
start = mid +1
answer = mid
print(answer)
'dev > 알고리즘' 카테고리의 다른 글
조합 알고리즘 파이썬 (0) | 2022.01.14 |
---|---|
백준 1463(동적 계획법) (0) | 2018.01.13 |