문제링크: 예상 대진표
✍🏻 Information
| content | |
|---|---|
| 언어 | python |
| 난이도 | ⭐️⭐️ |
| 풀이시간 | 8분 |
| 제출횟수 | 2 |
| 인터넷검색유무 | no |
🍒 My Code
def solution(n,a,b):
answer = 1 #무조건 경기 1번은 하므로
while (a+1)//2 != (b+1)//2:
a,b = (a+1)//2, (b+1)//2
answer+=1
return answer
💡 What I learned
return ((a-1)^(b-1)).bit_length()
-> a, b 를 xor 취하는 과정에서 ab 사이의 거리가 가까우면 상위비트는 차이가 나지 않고 거꾸로 ab 사이의 거리가 멀면 상위비트가 차이 나서 xor 연산 결과의 길이를 리턴해주면 라운드가 나온다고 한다...
def solution(n,a,b):
answer = 0
while a != b:
answer += 1
a, b = (a+1)//2, (b+1)//2
return answer
-> 아예 처음부터 a,b의 값을 바꿔버리는것