코딩 테스트/이것이 코딩테스트다
[이것이 코딩테스트다] 이코테 파이썬 이진 탐색
JEONGHEON
2023. 7. 17. 15:38
부품 찾기
# 부품 찾기 (시간 초과할 수도)
N = int(input())
arr = list(map(int, input().split()))
M = int(input())
data = list(map(int, input().split()))
for i in range(len(data)) :
if data[i] in arr :
print('yes', end = ' ')
else :
print('no', end = ' ')
# 부품 찾기(이진 탐색)
def binary_search(array, target, start, end) :
while start <= end :
mid = (start + end) // 2
if array[mid] == target :
return mid
elif array[mid] > target : # 중간점보다 target이 작으므로 왼쪽
end = mid - 1
else : # 중간점보다 target이 크므로 오른쪽
start = mid + 1
return None
N = int(input())
array = list(map(int, input().split()))
array.sort()
M = int(input())
data = list(map(int, input().split()))
for i in data :
result = binary_search(array, i, 0, N - 1)
if result != None :
print('yes', end = ' ')
else :
print('no', end = ' ')
떡볶이 떡 만들기
# 떡볶이 떡 만들기(시간 초과)
N, M = map(int, input().split())
array = list(map(int, input().split()))
array.sort()
arr = []
for i in range(array[-1], array[0] - 1, -1) :
sum = 0
for j in array :
if j >= i :
sum += j - i
else :
sum += 0
arr.append((sum, i))
answer = []
for i in range(len(arr)) :
if arr[i][0] >= M :
answer.append(i)
print(arr[answer[0]][1])
# 떡볶이 떡 만들기(이진 탐색)
N, M = map(int, input().split())
array = list(map(int, input().split()))
array.sort()
start = array[0]
end = array[-1]
result = 0
while start <= end :
summ = 0
mid = (start + end) // 2
for i in array :
if i > mid :
summ += i - mid
if summ < M :
end = mid - 1
else :
result = mid
start = mid + 1
print(result)