Algorithm/Binary Search
[Baekjoon 1920 / python / 실버4] 수 찾기
양선규
2024. 3. 24. 20:57
728x90
반응형
import sys
# 이분 탐색 알고리즘 함수
def binarySearch(originList, n, data): # 배열, 배열 길이, 찾을 값
start = 0
end = n - 1
while start <= end:
mid = (start + end) // 2
if originList[mid] == data:
return True
elif originList[mid] < data:
start = mid + 1
else:
end = mid - 1
return False
n = int(sys.stdin.readline())
originList = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
goodList = list(map(int, sys.stdin.readline().split()))
originList.sort() # 이분 탐색을 위한 정렬
originLen = len(originList) # 이분 탐색을 위한 배열 길이 구해놓기
for i in goodList:
if binarySearch(originList, originLen, i):
print('1')
else:
print('0')
정말 간단해 보이지만 시간 초과 때문에 쉽게 틀리곤 하는 문제다.
이 문제는 이분 탐색 알고리즘만 알면 아주 간단하게 풀 수 있다.
binarySearch() 함수가 이분 탐색 알고리즘을 구현한 함수이다. originList에 값이 있는지 확인할 때, binarySearch()를 사용해 주기만 하면 끝이다.
728x90
반응형