alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 1057 토너먼트_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 1057 토너먼트_파이썬

알파이 2020. 9. 6. 08:48

 

1057 토너먼트    https://www.acmicpc.net/problem/1057

 

1057번: 토너먼트

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

www.acmicpc.net

 

 

 

 

문제 풀기 전 공부할 것 : 수학, 브루트포스 알고리즘

 

 

 

 

 

 

 

풀이 1

<내용>

  • 김지민의 번호와 임한수의 번호를 입력받는다.
  • 토너먼트에서 항상 승리하기 때문에 김지민과 임한수는 대결하지 않는 경우는 없다.
  • 토너먼트 규칙을 찾으면 된다.
  • 토너먼트를 할 때 1, 2가 붙어 다음 라운드에서 1이 되고 3, 4가 붙어서 다음 라운드에 2가 된다.
  • 이를 적용했을 때 번호가 홀수이면 1을 더하고 짝수이면 그대로 번호를 부여하여 같으면 이번 라운드에서 대결하는 것이다.
  • 다음 라운드에 넘어갈 때는 나누기 2한 번호가 된다.

 

 

 

<코드>

n, kim, lim = map(int, input().split())
cnt = 1
while True:
    idx1 = kim if kim % 2 == 0 else kim + 1
    idx2 = lim if lim % 2 == 0 else lim + 1
    if idx1 == idx2:
        print(cnt)
        break
    kim = idx1//2
    lim = idx2//2
    cnt += 1

 

 

 

 

 

 

 

728x90
반응형
Comments