백준 10815 - 이진탐색

2020-12-22
import sys

def bin_searth(target, data):
  data.sort() # 이진탐색 데이터는 반드시 오름차순 정렬돼 있어야 함.
  start = 0 # 데이터의 첫 번째 인덱스
  end = len(data) - 1 # 데이터의 마지막 값 인덱스
  # 데이터 리스트의 가운데 인덱스의 값을 기준으로 절반씩 범위를 줄여가며 탐색.  
  while start <= end:
    mid = (start + end) // 2
    if data[mid] == target:
      return data[mid] # 타깃 숫자가 리스트 중간값과 일치하면 해당 값을 리턴하고 함수 종료.
      break
    elif data[mid] < target:
      start = mid + 1
    else:
      end = mid - 1
  return None # 해당하는 데이터가 없을 땐 None 을 출력

input = sys.stdin.readline
n = int(input().strip())
data = list(map(int,sys.stdin.readline().split()))
m = int(input().strip())
targets = list(map(int, input().split()))
for target in targets:
  result = bin_searth(target, data)
  if result: # 결과값이 존재하면 "1"을 출력
    print("1")
  else:
    print("0") # 결과값이 존재하지 않으면(None) "0"을 출력