최대 1 분 소요

문제 링크

내 풀이

def solution(n,a,b):
    count = 0
    while a != b:
        if a % 2 == 0:
            a = a // 2
        else:
            a = a // 2 + 1
        if b % 2 == 0:
            b = b // 2
        else:
            b = b // 2 + 1
        count += 1
        
    return count

다른 풀이

def solution(n, a, b):
    answer = 0
    while a != b:
        answer += 1
        a, b = (a + 1) // 2, (b + 1) // 2
        # +1을 한 뒤 2로 나눈 몫을 저장하는 이유는
        # a, b가 홀수이건 짝수이건 1을 더해서 몫으로 나누면
        # 다음 라운드의 번호를 구할 수 있음
    return answer

풀이 해석

  • a, b 를 (a+1) // 2, (b+1) // 2의 형태로 최신화하며 a,b가 같아졌을 경우 answer를 출력하낟

배울 점

  • a!= b의 조건으로 while문 돌리기
  • a와 b에 1을 더하여 2로 나누는 사고

댓글남기기