반응형 알고리즘17 1688. Count of Matches in Tournament 문제 우승자를 뽑는 토너먼트다. 팀이 홀수이면 +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 {n.. 2022. 6. 21. 1588. Sum of All Odd Length Subarrays 문제 배열의 개수가 홀수 일 때만 그 안에 값들을 더하는 문제다. 현재 풀이 /** * @param {number[]} arr * @return {number} */ var sumOddLengthSubarrays = function(arr) { let sum = 0 for(let i = 0; i < arr.length; i++){ for(let j = i; j 2022. 6. 15. 1791. Find Center of Star Graph 문제 그림을 보면 숫자 2가 다른 숫자들과 연결돼있다. 문제의 답은 숫자 2처럼 커넥션이 되는 숫자를 찾는 문제다. 현재 풀이 /** * @param {number[][]} edges * @return {number} */ var findCenter = function(edges) { let obj = {} for(let item of edges){ 버전 2 for(let num of item){ obj[num] ? obj[num] += 1 : obj[num] = 1; if(obj[num] > 1){ return num } } } 버전 1 // item.map(num=> { // obj[num] ? obj[num] += 1 : obj[num] = 1; // }) // for(let num in obj){.. 2022. 6. 13. 1773. Count Items Matching a Rule 문제 Rule Key와 Rule Value에 따라서 일치하는 조건에 맞는 개수를 리턴해주는 문제다. 나의 현재 풀이 /** * @param {string[][]} items * @param {string} ruleKey * @param {string} ruleValue * @return {number} */ var countMatches = function(items, ruleKey, ruleValue) { let cnt = 0; let idx = 0 for(let i of items){ switch(ruleKey){ case 'type': idx = 0; break; case 'color': idx = 1; break; default : idx = 2; } if(i[idx] === ruleValue) .. 2022. 6. 13. 1859. Sorting the Sentence 문제 글자 맨 끝에 있는 숫자대로 순서를 재배치해서 리턴하는 문제다. 이상하게 이 문제 왠지 풀이했던 기억이 안 나는데 한번 접근해보자!! 내 현재 풀이 /** * @param {string} s * @return {string} */ var sortSentence = function(s) { let arr = s.split(' '); let newArr = []; for(let end of arr) newArr[end[end.length-1]-1]=end arr = newArr.map(str=> str.slice(0,-1)); return arr.join(' '); }; 오랜만에 풀었던 문제중에 꽤나 고전하면서 다시 풀이했다. 고민했던 부분은 for문에 처음에 slice를 사용해서 풀이했는 데, 많은 .. 2022. 6. 12. 1221. Split a String in Balanced Strings 문제 R과 L을 split후 R, L이 몇 개가 동일하게 있는지 체크해 리턴하는 문제다. 내 현재 풀이 /** * @param {string} s * @return {number} */ var balancedStringSplit = function(s) { let cnt = 0; let times = 0; for(let i of s){ if(i === 'R'){ cnt++ }else{ cnt-- } if(cnt === 0) times++ } return times }; 풀었던 문제인데 고민를 하는데 방법이 잘 떠오르지 않아 제공해주는 힌트를 보고 해결했다. 의외로 풀이는 간단했다. 'R'를 기준으로 R 이면 1을 더하고 L이면 1을 뺀다. 그리고 체크하는 수가 0이 되면 횟수를 증가시킨다. 이렇게 하면 .. 2022. 6. 10. 이전 1 2 3 다음 반응형