- 자료의
중앙
에 있는 원소를 고른다.- 중앙 원소의 값과 찾고자 하는 목표 값을 비교한다.
- 목표 값이 중앙 원소의 값보다 작으면 자료의
왼쪽 반
에 대해서 새로 검색을 수행하고, 크다면 자료의오른쪽 반
에 대해서 새로 검색을 수행한다.- 찾고자 하는 값을 찾을 때까지 위의 과정을 반복한다.
💡 반복문 사용
def binary(arr, key):
start, end = 0, len(arr) - 1
while start <= end:
middle = (start + end) // 2
if arr[middle] == key: # 검색 성공
return True
elif arr[middle] > key:
end = middle - 1
else:
start = middle + 1
return False # 검색 실패
💡 재귀 사용
def binary(arr, start, end, key):
if start > end: # 검색 실패
return False
else:
middle = (start + end) // 2
if arr[middle] == key: # 검색 성공
return True
elif arr[middle] > key:
binary(arr, start, middle - 1, key)
elif arr[middle] < key:
binary(arr, middle + 1, end, key)
💡 반복문 사용
def binary(N, key): # N 전체 쪽수
start = 1
end = N
count = 0
while start <= end:
middle = (start + end)//2
count += 1
if middle == key:
return count
elif middle > key:
end = middle
else:
start = middle
T = int(input())
for tc in range(1, T+1):
# P: 전체 쪽수 / Pa = A가 찾아야 하는 번호 / Pb = B가 찾아야 하는 번호
P, Pa, Pb = map(int, input().split())
#각 플레이어의 페이지
p1_page = binary(P, Pa)
p2_page = binary(P, Pb)
result = '0'
if p1_page < p2_page: # cnt가 적은 사람이 이김
result = 'A'
elif p1_page > p2_page:
result = 'B'
print(f'#{tc} {result}')