본문 바로가기
LeetCode

1688. Count of Matches in Tournament

by 싼쵸 2022. 6. 21.
반응형

문제

우승자를 뽑는 토너먼트다. 팀이 홀수이면 +1을 하고 2로 나누고 팀이 짝수이면 그대로 2로 나누면 된다.

그리고 나눈 나머지들을 다 더해서 총 매치 수를 반환하면 된다.

현재 풀이

/**
 * @param {number} n
 * @return {number}
 */
var numberOfMatches = function(n) {
    let sum = 0;
    while(n > 1){
        if(n %2 === 1){
            n=Math.floor(n/=2)
            sum+=n
            n+=1  
        }else{
           n=Math.floor(n/=2)
            sum+=n
        }
    }
    return sum
};

몫에 소수점이 필요없어서 floor 함수를 이용했다.  그다음은 n이 홀수인지 짝수에 따라 분기를 처리해서 해결했다.

예전 풀이

/**
 * @param {number} n
 * @return {number}
 */
var numberOfMatches = function(n) {
 let quo = 0;
 let res = 0;
    while( n > 1){
    if(n % 2 !==0){
     quo = (n-1) / 2
  } else{
      quo = n / 2
  }   
    n-=quo
    res+=quo
 console.log('res',res)
    }
    return res
};

분명 접근방법은 같은데 코드가 그냥 복잡하다 ㅋㅋㅋ이 문제를 푼 날짜는 22년 1월 1일에 풀이했다. 22년의 첫날도 다행히 정말 놀지 않고 공부를 했구나 나름 뿌듯하다!!

다른 사람 풀이

const numberOfMatches = n => n - 1

 

보자마자 오!!라고 놀란 풀이다. 알고리즘 문제는 확실히 규칙을 파악하는 게 중요하다고 생각한다. 그래서 나름 수학 문제를 잘 풀면 유리한 건가?? 확실히 나는 아직까지 이런 규칙을 파악하는 것 많이 약한 것 같다. 근데 이 사람은 어떻게 파악했을까?? 대단하다

 

결과

반응형

'LeetCode' 카테고리의 다른 글

1588. Sum of All Odd Length Subarrays  (0) 2022.06.15
1791. Find Center of Star Graph  (0) 2022.06.13
1773. Count Items Matching a Rule  (0) 2022.06.13
1859. Sorting the Sentence  (0) 2022.06.12
1221. Split a String in Balanced Strings  (0) 2022.06.10

댓글