본문 바로가기
Algorithm/수학

[백준][1057번][수학] 토너먼트 문제

by 우툴 2016. 3. 22.
728x90

토너먼트 문제

https://www.acmicpc.net/problem/1057

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
int main(void){
    int totalmember;
    int imm, kim;
    int count=0;
 
    scanf("%d %d %d", &totalmember, &kim, &imm);
 
    if (totalmember < kim || totalmember < imm){
        count = -1;
    }
    else{
        while (kim != imm){
            kim = (kim + 1/ 2;
            imm = (imm + 1/ 2;
            count++;
        }
    }
 
    printf("%d\n", count);
 
    return 0;
}
cs

<문제를 푼 요령>

 - 처음 김지민과 임한수의 번호가 전체 사람의 수보다 큰지 안 큰지 걸러준다.

 - 토너먼트는 2명이 1명이 되므로 다음 라운드에서 인원을 축소시키면서 새로운 인원으로 만들 수 있다.

 - 즉 두 수에 1을 더해서 2로 나눈값이 같아질때 까지 진행한다.

 - 이 같아질때 까지의 횟수를 카운트 하면 된다.

728x90

댓글