728x90
https://www.acmicpc.net/problem/10815
이진탐색의 시간 복잡도는 O(logN)으로 선형탐색 O(n) 을 사용할 때보다 시간을 단축할 수 있다
# 10815 숫자카드
n = int(input())
card = list(map(int, input().split()))
m = int(input())
find = list(map(int, input().split()))
card.sort()
def bisect(left, right, target):
if left > right:
return None
mid = (left + right) // 2
if target == card[mid]:
return mid
elif card[mid] < target:
return bisect(mid+1, right, target)
else:
return bisect(left, mid - 1, target)
for i in find:
result = bisect(0, n-1, i)
if result == None:
print('0',end=' ')
else:
print('1', end=' ')
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 1197 최소 스패닝 트리 in Python : 크루스칼 알고리즘으로 구현 (0) | 2022.02.28 |
---|---|
[백준] 5639 이진검색트리 in Python : tree 전위순회의 특성을 이용한 풀이 + EOF를 이용해서 입력받기 (0) | 2022.02.25 |
[백준] 12851 숨바꼭질 2 in Python : bfs의 응용 (0) | 2022.02.25 |
[백준] 17070 파이프 옮기기1 -> dfs로 풀기 vs DP로 풀기 (0) | 2022.02.22 |
[백준] 2263 트리의 순회 -> 트리의 inorder, postorder의 성질을 이해하자 (0) | 2022.02.21 |