반응형
문제
https://www.acmicpc.net/problem/1920
가장기본적인 이분탐색이다.
각단계마다 반씩 줄어들어서 logN만큼의 시간이 소요된다.
A를 정렬하고 각 수가 주어질때마다 A의 중앙값보다 작다면 앞에서 크다면 뒤에서 다시
이분탐색을 시행한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import sys def binary_search(start,end,M): if start>end: return 0 mid=(start+end)//2 if A[mid]==M:#같다면 서치종료 return 1 elif A[mid]>M:#M이 중앙값보다 작다면 앞에서 비교 return binary_search(start,mid-1,M) else:#크다면 뒤에서 비교 return binary_search(mid+1,end,M) N=int(sys.stdin.readline()) A=list(map(int,sys.stdin.readline().split())) M=int(sys.stdin.readline()) B=list(map(int,sys.stdin.readline().split())) A=sorted(A)#A정렬 for i in range(M): if binary_search(0,N-1,B[i]): print(1) else: print(0) | cs |
반응형
'알고리즘(python) > 탐색' 카테고리의 다른 글
[Python]이분탐색 백준 1654 (0) | 2020.01.31 |
---|---|
[Python]이분탐색 백준 10816 (0) | 2020.01.31 |
[Python]백트래킹 백준 14889 (0) | 2020.01.07 |
[Python]백트래킹 백준 2580 (0) | 2020.01.06 |
[Python]백트래킹 백준 9663 (0) | 2020.01.06 |
최근댓글