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로 만들고 체크하는 방식으로도 풀 수 있다.

반응형