문제 출처 : SW Expert Academy
문제 - A, B에서 이진탐색 게임을 시킨다
끝페이지(page), 각각 찾을 페이지(a,b) 를 주고 누가 먼저 찾는지?
1) 시작점과 끝점을 설정하고 중앙값을 기준으로 검색 시작
2) 검색을 반복할 때마다 count를 증가시켜, 더 적은 쪽이 승리!
이진탐색 함수정의
def binary_search(page, target):
start = 1
end = page
count = 0
while start <= end:
mid = int((start+end) / 2)
if mid == target:
return count
elif mid < target:
start = mid
count += 1
elif mid > target:
end = mid
count += 1
함수 실행
T = int(input())
for tc in range(1, T + 1):
page, a, b = map(int, input().split())
count_a = binary_search(page, a)
count_b = binary_search(page, b)
if count_a > count_b:
result = 'B'
elif count_b > count_a:
result = 'A'
else:
result = 0
print(f'#{tc} {result}')
1
400 300 350
#1 A