본문 바로가기
코딩테스트

예상 대진표

by 느림보어른 2021. 6. 3.

문제풀이

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

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

'코딩테스트' 카테고리의 다른 글

수식 최대화  (0) 2021.06.03
실패율  (0) 2021.06.03
오픈채팅방  (0) 2021.06.01
게임 맵 최단거리  (0) 2021.06.01
3진법 뒤집기  (0) 2021.06.01