시작이 반

[백준] 1920번 (python 파이썬) 본문

알고리즘/백준

[백준] 1920번 (python 파이썬)

G_Gi 2021. 3. 16. 16:44
SMALL

https://www.acmicpc.net/problem/1920

 

탐색 문제이다. 

파이썬의 in을 써서 풀 수 있지만 이분탐색을 이용하여 문제를 풀었다.

 

index를 기준으로 left right를 나웠고 

 

 

이분탐색의 탐색 종료 조건은 

mid 값이 찾으려는 수랑 같으면 return 을 해주고

찾는 값이 없을때 left가 right보다 커질경우 종료한다.

while left <= right

 

n = int(input())
n_list = list(map(int, input().split(' ')))
n_list.sort()

m = int(input())
targets = list(map(int, input().split(' ')))


def binary(target):
    left = 0
    right = n - 1

    while left <= right:
        mid = (left + right) // 2
        if n_list[mid] == target:
            return True

        if target < n_list[mid]:
            right = mid-1
        elif target > n_list[mid]:
            left = mid + 1


for i in range(m):
    if binary(targets[i]):
        print(1)
    else:
        print(0)

 

LIST