LeetCode - 1688. Count of Matches in Tournament

henu·2023년 9월 6일
0

LeetCode

목록 보기
57/186

Solution

var numberOfMatches = function(n) {
    let matches = 0;

    while(n > 1) {
        if(n % 2) {
            matches += (n - 1) / 2;
            n = Math.floor(n / 2) + 1;
        } else {
            matches += (n / 2);
            n = n / 2;
        }
    }

    return matches;
};

Explanation

토너먼트에서 총 경기 수를 구하는 문제이다.
우리가 알고 있는 일반적인 토너먼트 방식처럼 팀 수가 홀수일 경우 한 팀이 부전승으로 올라가게된다. 짝수일 경우에는 모든 팀이 경기를 치른다.
1. 팀 수가 짝수일 경우 : 경기수는 n/2이고 n/2개의 팀이 올라가게 된다.
2. 팀 수가 홀수일 경우 : 경기수는 (n-1)/2이고 n/2+1개의 팀이 올라가게 된다.

Others

var numberOfMatches = function(n) {
    return n - 1;
};

근데 검색해보니 토너먼트 총 경기 수를 구하는 굉장히 간단한 수학 공식이 있었다....
팀 수에서 1을 빼면 끝이었다.

0개의 댓글