반응형

1. 문제 소개

  • 수학, 브루트 포스 알고리즘 유형 문제에 해당한다.

 

https://www.acmicpc.net/problem/1057

2. 코드

def set_test_case():
    input_str= input()
    parse_str = input_str.split(" ")
    N, A, B  = int(parse_str[0]),int(parse_str[1]),int(parse_str[2])
    return N,A,B    
    
def divide(num):
    if num == 1:
        return num
    elif num % 2 != 0:
        return num//2 + 1
    else:
        return num//2

def solution():
    N,A,B = set_test_case()
    round_count = 0
    while(True):
        round_count +=1 
        A = divide(A)
        B = divide(B)
        if A == B :
            break
    print(round_count)

def main():
    solution()
    
if __name__ == '__main__':
    main()

3. 코멘트

  • 사실.. 실행 예제를 손으로 그려보며, 직감적으로 규칙을 찾았기 때문에 수학적 접근으로 풀진 못했다.
  • 문제 설명에 따라서, 토너먼트 라운드가 올라갈 때 새로운 팀 번호가 부여되는데, 팀 번호가 부여되는 규칙이 있고, A와 B 팀 번호가 같아 두 팀이 붙을 때 라운드를 출력하면 된다고 생각했다.
  • 처음에는 히든 케이스 때문에 통과하지 못했었는데, 함께 스터디한 유진님이 나와 비슷한 접근 방식으로 해결했고, 도움을 받아 통과했다.
  • 새해 첫 스터디였다. ㅎㅎ
반응형

+ Recent posts