728x90
import math
def solution(n,a,b):
answer = int(math.log2(n));
start = 0;
end = n;
while True :
mid = (start + end) // 2;
if a <= mid and b <= mid :
end = mid;
answer -= 1;
elif a > mid and b > mid :
start = mid;
answer -= 1;
else :
return answer;
풀이 및 회고
대진표는 8강 4강 결승(2강) 이런식으로 /2 가 되는 것을 볼 수가 있습니다. 그래서 이분탐색으로 구현하려고 했습니다.
예를들어 4강인 대진표가 있으면 서로 반으로 나눠 반대쪽에 있으면 마지막 라운드에 만난다는 것을 가정하여 중간지점을 하나 두어 엇갈릴때 해당 라운드에 만나는것을 알 수 있습니다.
728x90
'프로그래머스' 카테고리의 다른 글
프로그래머스 LV2 행렬의 곱셈 (0) | 2024.05.26 |
---|---|
프로그래머스 LV2 점프와 순간 이동 (0) | 2024.05.25 |
프로그래머스 LV 2 숫자의 표현 (0) | 2024.05.13 |
프로그래머스 LV 2. 두 큐 합 같게 만들기 (1) | 2023.11.24 |
프로그래머스 LV1 . 신규 아이디 추천 (1) | 2023.11.13 |