.알고리즘 문제를 풀고 풀이 및 소감을 작성하는 시간을 가졌습니다.
def change(num):
if num==1:
return 1
elif num%2 == 0:
return num//2
else:
return (num//2)+1
def solution(n,a,b):
answer = 1
# 종료조건을 찾아라!
while (a>2 or b>2):
a, b = change(a), change(b)
if a==b:
return answer
answer+=1
return answer
가장 주목해야 하는 포인트는 5, 6과 6, 7의 차이였다. 5, 6의 경우 그 상황에서 바로 경쟁상대가 되지만 6, 7의 경우 다음 라운드로 올라가서 상대방을 만나게 된다. 이 차이를 어떻게 구분할지 생각하며 문제를 풀었다. 우선 숫자가 들어왔을 때 다음 라운드에서 부여받는 번호를 return 하는 change 함수를 만들었다.
def change(num):
if num==1:
return 1
elif num%2 == 0:
return num//2
else:
return (num//2)+1
숫자 num을 넣었을 때 위 그림처럼 되도록 코드를 구현하였다. 이 때 num==1인 경우 return 값이 0이 되지 않도록 조건문을 추가해주었다.