본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 1057번 : 토너먼트 답

반응형

www.acmicpc.net/problem/1057

 

1057번: 토너먼트

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를

www.acmicpc.net

 

수학공식을 찾은 후 모든 경우를 검사하는 문제였습니다.

풀이방법

 1. 김지민 임한수를 각각 a,b로 두어 입력받습니다.

 2. a==1, b==2 또는 a==b일 때까지 2로 나누어줍니다. 이 때 a나 b가 홀수라면 2로나눈 후 1을 더해줍니다.

 3. 2번과정을 시행한 갯수가 곧 round 갯수입니다. 따라서 이를 출력해줍니다.

Code

#include <bits/stdc++.h>
using namespace std;
int num[100001];
int main(){
    int n, a, b;
    cin >> n >> a >> b;
    int round = 0;
    while(1){
        round++;
        if(a == 1 && b == 2 || a == b){
            if(a == b) round--;
            break;  
        } 
        if(a % 2 == 1)a = a/2 + 1;
        else a /= 2;
        if(b % 2 == 1) b = b/2 + 1;
        else  b /= 2;
    }
    cout << round <<'\n';
}