KEEP GOING
[python] SWEA : 이진 탐색 본문
반응형
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[key point]
- 이진탐색이므로 탐색할 배열 정렬하기
- 양쪽을 번갈아가며 탐색하는지 검사하기
[구현]
def binarySearch(arr, start, end, target):
# 번갈아 방문하는지 검사
check = 0
while start <= end:
mid = (start + end)//2
if arr[mid] < target:
# 오른쪽을 반복 방문했다면
if check == 1:
return False
start = mid + 1
check = 1
elif arr[mid] > target:
# 왼쪽을 반복 방문했다면
if check == -1:
return False
end = mid - 1
check = -1
else:
return True
return False
for tc in range(1, int(input())+1):
result = 0
n, m = map(int, input().split())
# 이진탐색이므로 탐색할 배열 정렬
a_lst = sorted(map(int, input().split()))
for b in list(map(int, input().split())):
if binarySearch(a_lst, 0, n-1, b):
result += 1
print(f'#{tc} {result}')
반응형
'code review > binary search' 카테고리의 다른 글
[python] 프로그래머스 60060번 : 가사검색 (bisect) (0) | 2022.01.14 |
---|---|
[python] 이것이코딩테스트다 : 정렬된 배열에서 특정 수의 개수 구하기 (bisect) (0) | 2022.01.13 |
[python] 백준 1654번 : 랜선 자르기 (이진탐색) (0) | 2021.11.09 |
Comments