본문 바로가기

Algorithm/이진 탐색

[이것이 취업을 위한 코딩테스트다] 07. 이진 탐색

01. 부품 찾기

import sys
input=sys.stdin.readline

def binary_search(arr,target,start,end):
    while start<=end:
        mid=(start+end)//2
        if arr[mid]==target:
            return mid
        elif arr[mid]>target:
            end=mid-1
        else:
            start=mid+1
    return None
    
n=int(input())
arr1=list(map(int,input().split()))
arr1.sort() # 이진 탐색을 위한 정렬 수행

m=int(input())
arr2=list(map(int,input().split()))

for val in arr2:
    result=binary_search(arr1,val,0,n-1)
    if result!=None:
        print('yes',end=" ")
    else:
        print('no',end=" ")

 

02. 떡볶이 떡 만들기

import sys
input=sys.stdin.readline

n,m=map(int,input().split())
ddeoks=list(map(int,input().split()))
start=0
end=max(ddeoks)

result=0
while start<=end:
    mid=(start+end)//2
    total=0
    for ddeok in ddeoks:
        if ddeok>mid:
            total+=ddeok-mid
            
    if total<m:
        end=mid-1
    else:
        start=mid+1
        result=mid

print(result)