"""
1 vs 2 || 3 vs 4 || 5 vs 6 || 7 vs 8 [Round 1]
1 vs 4 || 5 vs 7 [Round 2]
4 vs 7 [Round 3]
큐를 쓰면 될 듯 ?!!!
"""
from collections import deque
def solution(n,a,b):
target = [a,b]
q = deque([(i,1) for i in range(1,n+1)])
while q:
first = q.popleft()
second = q.popleft()
if first[0] in target and second[0] in target:
return first[1]
elif first[0] in target:
q.append((first[0],first[1]+1))
elif second[0] in target:
q.append((second[0],second[1]+1))
else:
q.append((first[0],first[1]+1))
대략적인 동작 과정을 설명하자면 ...
(사람 번호, 스테이지) 순서쌍으로 큐를 돌린다.
2개씩 빼주면서 확인을 하는데, 경우의 수가 총 3개가 있다.
2개 모두 a,b라면 원하는 대진을 찾은 것이므로 현재 스테이지를 리턴한다.
a,b가 1개만 있는 경우라면 그 사람을 승리시키고 스테이지를 올린다.
둘 다 없다면 아무나 승리시키고(나는 첫 번째 사람을 승리시켰다) 스테이지를 올린다.
def solution(n,a,b):
return ((a-1)^(b-1)).bit_length()
와 ㅋㅋ