출처 : 백준, 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)
고찰
-
'알고리즘 > Python' 카테고리의 다른 글
[python] 백준 1874 - 스택 수열 (0) | 2022.05.07 |
---|---|
[python] 백준 13305 - 주유소 (0) | 2022.05.04 |
[python] 백준 2529 - 부등호 (0) | 2022.04.07 |
[python] 백준 1072 - 게임 (0) | 2022.04.07 |
[python] 백준 2193 - 이친수 (0) | 2022.04.03 |