나의 풀이
1. 오류남 ㅠ
n, m = map(int, input().split())
rice = sorted(list(map(int, input().split())))
def sell(arr, target, start, end):
if start > end:
return mid
amount = 0
mid = (start + end) // 2
for i in arr:
if mid < i:
amount += i - mid
if amount < target:
return sell(arr, target, start, mid - 1)
else:
return sell(arr, target, mid + 1, end)
print(sell(rice, m, 0, max(rice)))
invalid syntax (<string> local variable 'mid' referenced before assignment)
오류 발생!
: 전역 변수를 지역 변수로 호출해서 발생하는 오류라는데..
왜...? 난 멀쩡하게 코드 썼는데..?
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
2. global 변수 추가 & 종료 조건 변경
n, m = map(int, input().split())
rice = sorted(list(map(int, input().split())))
def sell(arr, target, start, end):
global mid
if start == end:
return mid
amount = 0
mid = (start + end) // 2
for i in arr:
if mid < i:
amount += i - mid
if amount < target:
return sell(arr, target, start, mid - 1)
else:
return sell(arr, target, mid + 1, end)
print(sell(rice, m, 0, max(rice)))
global mid
: 추가하니까 정상 작동 됨. 왜...지...?
도대체, 왜!!!!!! 이걸 추가 해야 하는건데!!!!!!
if start == end
로 변경: if start < end으로 했을 때 결과값이 1 더 크게 나옴.. 그래서 부랴부랴 바꾸긴 했는데, 맞는지는 잘...