5_hyun
2022. 6. 15. 21:09
반응형
내 풀이(이진 탐색을 어이없게 구현하지 못함)
# 이진 탐색
def binary(ary, target, start, end):
left = start
mid = (start + end) // 2
right = end
if left > right:
return "no"
if target == ary[mid]:
return "yes"
elif target < ary[mid]:
return binary(ary, target, left, mid-1)
else:
return binary(ary, target, mid+1, right)
n = int(input())
ary = list(map(int, input().split()))
ary.sort()
m = int(input())
chk = list(map(int, input().split()))
answer = []
for i in range(m):
answer.append(binary(ary, chk[i], 0, n-1))
for i in range(m):
print(answer[i], end = " ")
이진 탐색에 대해서 완벽하게 이해 한 줄 알았는데, 막상 구현해보니까 사소한 것을 빼먹었었다. 각 조건을 체크하고 return을 해줘야 했는데, 이것을 빼 먹었다.
이 문제는 집합에 번호를 1로 만들고 체크하는 방식으로도 풀 수 있다.
반응형