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;
};
토너먼트에서 총 경기 수를 구하는 문제이다.
우리가 알고 있는 일반적인 토너먼트 방식처럼 팀 수가 홀수일 경우 한 팀이 부전승으로 올라가게된다. 짝수일 경우에는 모든 팀이 경기를 치른다.
1. 팀 수가 짝수일 경우 : 경기수는n/2
이고n/2
개의 팀이 올라가게 된다.
2. 팀 수가 홀수일 경우 : 경기수는(n-1)/2
이고n/2+1
개의 팀이 올라가게 된다.
var numberOfMatches = function(n) {
return n - 1;
};
근데 검색해보니 토너먼트 총 경기 수를 구하는 굉장히 간단한 수학 공식이 있었다....
팀 수에서 1을 빼면 끝이었다.