알고리즘
이진 탐색
굴잉
2024. 5. 1. 13:20
728x90
이진탐색 (Binary Search)
- 탐색할 자료를 둘로 나누어 해당 데이터가 있을만한 곳을 탐색하는 방법
참고) 리스트 정렬 시키기
import random
data_list = random.sample(range(100), 10)
// 원본 리스트가 바뀜
data_list.sort()
예제 코드
# 백준 1920. 수 찾기
#
# 링크: https://www.acmicpc.net/problem/1920
n = int(input())
n_list = list(map(int, input().split()))
n_list.sort()
m = int(input())
m_list = map(int, input().split())
def binary_search(num, start, end):
if start > end:
return False
mid = (start+end) // 2
if n_list[mid] > num:
return binary_search(num, start, mid-1)
elif n_list[mid] < num:
return binary_search(num, mid+1, end)
else:
return True
for i in m_list:
if binary_search(i, 0, n-1):
print(1)
else:
print(0)
728x90