본문 바로가기

알고리즘 · 코딩

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

문제 링크

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

 

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

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

programmers.co.kr


C++ 풀이

#include <iostream>
#include <math.h>
using namespace std;

int get_nextN(int currentN) {
    if (currentN % 2 == 0)
        return currentN / 2;
    else
        return (currentN + 1) / 2;
}

int solution(int n, int a, int b)
{
    int answer = 1;
    
    //두 참가자의 번호 차이가 1이고, 더 높은 번호가 2의 배수여야 서로 붙을 수 있음 
    while (!(abs(a - b) == 1 && max(a,b) % 2 == 0)) {
        a = get_nextN(a);
        b = get_nextN(b);
        answer++;
    }
    return answer;
}

 

 

 

반응형