dev/알고리즘

백준 2805 pypy3 python 차이

jeongsu 2022. 1. 8. 15:30

오랜만에 이진탐색 코드를 좀 풀어보려고 하는데

계속 시간초과가 난다..

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)