반응형
문제
우승자를 뽑는 토너먼트다. 팀이 홀수이면 +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 |
댓글