[Algorithm] 이진탐색 2512

Jifrozen·2021년 7월 29일
1

Algorithm

목록 보기
34/70

2512

import sys
input = sys.stdin.readline
n = int(input())
s = list(map(int, input().split()))
m = int(input())
start, end = 0, max(s)
while start <= end:
    mid = (start + end) // 2
    num = 0
    for i in s:
        if i >= mid: num += mid
        else: num += i
    if num <= m: start = mid + 1
    else: end = mid - 1
print(end)

17266

N = int(input())
M = int(input())

data = list(map(int, input().split()))
start = 0

if len(data) == 1:
    start = max(data[0] - 0, N - data[0])
else:
    for i in range(len(data)):
        if i == 0:
            end = data[i] - 0
        elif i == len(data) - 1:
            end = N - data[i]
        else:
            tmp = data[i] - data[i-1]
            if tmp % 2:
                end = tmp // 2 + 1
            else:
                end = tmp // 2
        start = max(start, end)

print(start)

숫자골드 2613

못하겠다...

2개의 댓글

comment-user-thumbnail
2021년 7월 30일

안녕하세요, 김덕우입니다! 이진 탐색 저도 많이 어렵더라고요... 오늘이 마지막이니 조금만 더 화이팅해요!!!!!

답글 달기
comment-user-thumbnail
2021년 7월 31일

저도 숫자구슬 문제가 좀 이해가 잘 안가더라고요,, 그래도 나머지 문제는 간결하고 깔끔하게 코드를 잘 작성하신 것 같아요! 수고하셨습니다~

답글 달기