알고리즘/Python

[python] 백준 1057 - 토너먼트

제주도랏맨 2022. 4. 8. 00:06

출처 : 백준, https://www.acmicpc.net/problem/1057

 

1057번: 토너먼트

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를

www.acmicpc.net

 

더보기

 

풀이

 

if __name__ == '__main__':
  num, A, B = map(int, input().split())
  count = 0

  while True:
    if A == B:
      break
      
    if A > 1:
      A = A//2 if A % 2 == 0 else (A//2) + 1
    if B > 1:
      B = B//2 if B % 2 == 0 else (B//2) + 1

    count += 1

  print(count)

 

번호가 1보다 클 때, 홀수라면 //2 해준거에 +1을 해준 값을, 짝수라면 //2 해준 값을 넣어서, 

두 번호가 같으면 같은 라운드에서 만난 것이므로 break해서 나온다.


 

시간 복잡도

 

-

 

다른 사람의 풀이를 보면서 알게 된 점

 

-= //2

 

if __name__ == '__main__':
  num, A, B = map(int, input().split())
  count = 0

  while A != B:
    A -= A//2
    B -= B//2

    count += 1

  print(count)

 

고찰

 

-