본문 바로가기
알고리즘/프로그래머스

[ 프로그래머스 ] 예상 대진표

by 뎁꼼 2020. 7. 2.

1. 문제


 

 

코딩테스트 연습 - 예상 대진표

△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N�

programmers.co.kr

 

 

2. 소스코드


- 간단한 수학문제.

- 현재 대진 번호가 cur, 다음 대진 번호가 next라 하면

next = cur % 2 == 0 ? cur / 2 : cur / 2 + 1 임을 이용해 주면 된다.

- B-A의 차이가 0이 될 때까지 반복하기에, 둘 중 작은 값을 A에 넣었다. 

 

소스코드

#include <iostream>

using namespace std;

int solution(int n, int a, int b)
{
    int answer = 0;

    if( a > b ) swap(a,b);
    
    while(b - a){
        a = a % 2 == 0 ? a/2 : a/2 + 1;
        b = b % 2 == 0 ? b/2 : b/2 + 1;
        answer++;
    }

    return answer;
}