알고리즘/PS - 프로그래머스

[프로그래머스 - C++, Java] 예상 대진표

excited-hyun 2021. 7. 23. 15:49
반응형

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

 

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

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

programmers.co.kr

 

풀이

백준에도 이 문제랑 동일한 문제가 있습니당..

(1,2)는 다음 라운드에서 1이, (3, 4)는 다음 라운드에서 2가 되는데요.

여기서 규칙이 하나 나옵니다.

다음 라운드에 배정되는 숫자 = (현재 숫자 + 1) / 2 

따라서 이 규칙을 이용해 다음 라운드에 배정되는 수가 서로 동일해질 때까지 반복하고 동일해질 때 까지 몇번을 반복한지 세주면 됩니다.

 

<c++ 코드>

#include <iostream>

using namespace std;

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

    while(a!=b){
        a = (a+1)/2;
        b = (b+1)/2;
        answer++;
    }

    return answer;
}

 

<Java 코드>

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

        while (a!= b){
            a = (a+1)/2;
            b = (b+1)/2;
            answer++;
        }

        return answer;
    }
}
728x90
반응형