Algorithm/Baekjoon
[Python3] 백준(Baekjoon) 숫자카드 10815
앵도라지
2023. 2. 1. 20:13
문제 :
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.
접근 :
제한 숫자가 크기 때문에 시간 초과가 어떻게 해도 난다.
이진 탐색을 활용해서 문제를 풀었다.
풀이 :
import sys
def binary_search (array, target, start, end):
while start <= end :
mid = (start + end) //2
if array[mid] == target :
return mid
elif array[mid] > target :
end = mid - 1
else :
start = mid + 1
return None
N = int(input())
arr = sorted(list(map(int, sys.stdin.readline().split())))
M = int(input())
card = list(map(int, sys.stdin.readline().split()))
ans = []
for i in card :
result = binary_search(arr, i, 0, len(arr)-1)
if result == None:
ans.append(0)
else :
ans.append(1)
print(*ans, sep=' ')