문제 : https://www.acmicpc.net/problem/1920
이분 탐색 문제다.
이분 탐색 알고리즘을 구현하는 문제다.
- 행렬을 정렬한다.
- left, right를 각각 0, 길이-1로 한다.
- left <= right 인 동안 loop을 돌면서
- mid = (left+right ) /2를 한다.
- arr[mid]가 찾는 값보다 크면right = mid-1
- arr[mid]가 찾는 값보다 작으면 left = mid+1
- 찾는 값이면 위치 반환
- 반환을 못하면 l>r인 상황이 되어 loop탈출 -> -1 실패 반환
import sys
n = int(sys.stdin.readline())
a = [int(i) for i in sys.stdin.readline().split()]
m = int(sys.stdin.readline())
b = [int(i) for i in sys.stdin.readline().split()]
def binsearch(arr, x):
l, r = 0, len(arr)-1
while l <= r:
mid = (l+r)//2
if arr[mid] > x:
r = mid-1
elif arr[mid] < x:
l = mid+1
else:
return mid
return -1
a.sort()
for c in b:
tmp = binsearch(a, c)
if tmp != -1:
print(1)
else:
print(0)
'취준 > 백준' 카테고리의 다른 글
[백준][Python][2583][BFS] 영역 구하기 (0) | 2020.05.03 |
---|---|
[백준][Python][10026][BFS] 적록색약 (0) | 2020.05.01 |
[백준][Python][7562][BFS] 나이트의 이동 (0) | 2020.04.30 |
[백준][Python][2667][BFS] 단지번호붙이기 (0) | 2020.04.29 |
[백준][Python][1012][BFS] 유기농 배추 (0) | 2020.04.28 |