오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

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)))

 

전형적인 이분 탐색 문제