코딩테스트 연습 > 2017 팁스타운 > 예상 대진표

파이톨치·2022년 3월 3일
0
post-thumbnail

출처

https://programmers.co.kr/learn/courses/30/lessons/12985

코드

def solution(n,a,b):
    answer = 0
    i = 1
    
    while n != 1:
        # 연산 편하라고 더해주기
        if a%2 == 1:
            a += 1
        if b%2 == 1:
            b += 1  
            
        # 같은 라운드면
        if a == b:
            return i
        
        # 다음 라운드로 넘어가기
        i += 1
        b //= 2
        a //= 2
        
    return answer

풀이

문제를 보고 단순 연산으로 가능하지 않을까 했다.
1. 잘 생각해보면 (1, 2), (3, 4) 이런식으로 세트다. 즉, 홀수에 1만 더해주면 같은 라운드에 있는 숫자라는 말이다. 그러니 홀수에 1을 더해준다.
2. 1을 더했으니 같은 라운드면 숫자가 같을 것이다. 그러니 라운드가 같으면 지금 현재 라운드를 반환해준다.
3. 라운드(i) += 1 해주고 a와 b도 2로 나누어 주어서 다음 라운드로 넘어가게 만든다.

만약, a가 4였으면 다음 라운드는 2가 되는 형식 ( 문제 참고하시길)

profile
안알랴줌

0개의 댓글