반응형
문제:
https://www.acmicpc.net/problem/1920
정답:
import sys
n = int(sys.stdin.readline())
n_arr = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
m_arr = list(map(int, sys.stdin.readline().split()))
def binary_search(array, target, start, end):
while start <= end:
mid = (start + end) // 2
if array[mid] == target:
return mid
elif array[mid] > target:
end = mid - 1
else:
start = mid + 1
return None
n_arr.sort()
for i in m_arr:
result = binary_search(n_arr, i, 0, n-1)
if result != None:
print(1)
else:
print(0)
풀이:
이진 탐색 알고리즘을 사용해 간단하게 해결했다.
정수의 범위가 -2^31 보다 크거나 같고 2^31보다 작다.
탐색해야 하는 수의 범위가 큰 상황에서 탐색을 수행해야 하기 때문에 이진 탐색으로 문제에 접근했고, 정답을 맞혔다.
반응형
'Python 코딩테스트' 카테고리의 다른 글
이진 탐색(이분 탐색): 백준 1654 파이썬 (0) | 2021.09.05 |
---|---|
이진 탐색(이분 탐색): 백준 10816 파이썬 (0) | 2021.09.05 |
정렬: 백준 18870 파이썬 (0) | 2021.08.29 |
정렬: 백준 10814 파이썬 (0) | 2021.08.29 |
정렬: 백준 1181 파이썬 (0) | 2021.08.29 |