1. 문제 설명
https://www.acmicpc.net/problem/1057
2. 아이디어
좀 무식하게 풀이한 감이 있다.
(1, 2), (3, 4), (5, 6) 이런 식으로 매칭을 해야 되는데 코드를 너무 대충 짰었는지
4번이 5번이랑 대결을 하고 우승을 하질 않나 별 이상한 코드가 만들어져서
그걸 보완하다가 지저분해진 거 같다.
만약 지금 다시 풀어보라고 한다면..
while문 조건에 kim != im을 넣고
kim -= kim // 2, im -= im // 2, cnt += 1만 해도 충분히 통과되지 않을까 싶다.
이렇게 성장하는 거지 뭐 ㅎㅎ
3. 코드
import math
def solution():
n, kim, im = map(int, input().split())
num = [i for i in range(1, n + 1)]
flag = 0
round = 1
for i in range(math.ceil(n / 2)):
if (min(kim, im) + 1 == max(kim, im)) and (min(kim, im) + 1) % 2 == 0:
print(round)
flag = 1
break
kim = (kim + 1) // 2 if kim % 2 == 1 else kim // 2
im = (im + 1) // 2 if im % 2 == 1 else im // 2
round += 1
if flag == 0:
print(-1)
solution()