문제풀이
def solution(n,a,b):
answer = 0
for i in range(0, n):
if a % 2 == 1:
a += 1
if b % 2 == 1:
b += 1
if a == b:
answer = i+1
break
else:
a /= 2
b /= 2
return answer
알고리즘
특별한 알고리즘이 필요한 문제는 아니었다. 이 문제를 해결할 키 포인트는 대전 상대가 자신과 번호가 1 차이 나는 것에 있다. 그리고 이긴 사람의 번호는 자신의 번호에 2를 나눈 몫으로 부여받는다. 홀수인 경우 자신의 번호에 1을 더하여 2로 나누면 된다. 따라서 a, b선수의 번호가 같을 때 이 둘이 서로 경기를 진행한다는 말과 동일하다. 조금 더 설명하자면 나는 선수가 홀수인 경우 1을 먼저 더해주고 비교하기 때문에 값이 같을 때가 경기를 진행한 라운드가 된다.
출처
문제: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges