백준

백준 10815번 어떻게 풀었나

kimbro6 2023. 1. 2. 00:01
  • 푼 방법
    • 1920번 문제와 굉장히 유사하여 코드를 출력문만 바꿔서 복붙했다.
  • 좋았던점
    • 비슷한 문제가 생각났다.

코드

import sys
# N입력받기
N = int(input())
# 리스트 입력받기
A = list(map(int, sys.stdin.readline().split()))
# M 입력받기
M = int(input())
# 리스트 입력받기 
cheaklist = list(map(int, sys.stdin.readline().split()))
A.sort()
#이진검색

for k in range(M):
	left = 0
	right = N-1
	while True:
		middle = (left + right) // 2
		if cheaklist[k] == A[middle]:
			print(1, end=" ")
			break
		elif left == right:
			print(0, end=" ")
			break
		elif cheaklist[k] < A[middle]:
			right = middle
		elif cheaklist[k] > A[middle]:
			if right-left == 1:
				left = middle + 1
			else :
				left = middle