Algorithm/백준 온라인 저지(BOJ)
[BOJ] 10815 숫자카드 파이썬
junha6316
2021. 2. 17. 19:42
N= int(input())
num_list = list(map(int, input().split()))
M = int(input())
test_case = list(map(int, input().split()))
num_list.sort() #타겟 리스트를 정렬
def bs(num_list, start, end, num):
mid = (start + end)//2
if num_list[mid] == num:
return 1
if start > end:
return 0
if num_list[mid] > num: #중간 값이 찾고자 하는 값보다 크면 앞쪽을 찾으면 된다.
answer = bs(num_list, start, mid-1, num)
if num_list[mid] < num:#중간 값이 찾고자 하는 값보다 작으면 뒤쪽을 찾으면 된다.
answer = bs(num_list, mid+1, end, num)
return answer
start = 0
end = N-1
answer =[]
for num in test_case:
answer.append(bs(num_list, start, end, num))
print(' '.join(map(str, answer)))
전형적인 이분 탐색 문제