코딩 테스트/프로그래머스 level2 28

예상 대진표

코드 function solution(n, a, b) { let count = 1; if (a > b) { let temp = a; a = b; b = temp; } while (n > 1) { if (a + 1 === b && b % 2 === 0) return count; a = Math.ceil(a / 2); b = Math.ceil(b / 2); count++; n /= 2; } } 다른 사람 코드 function solution(n,a,b) { let answer = 0; while(a !== b) { a = Math.ceil(a/2); b = Math.ceil(b/2); answer++; } return answer; } 굳이 n을 사용하지 않아도 됐다 a와 b가 7,8처럼 맞붙을 경우는 어차..

카펫

코드 // brown = 2가로 + 2세로 -4 // brown - 2세로 +4 = 2가로 // 가로 = 0.5brown - 세로 +2 // yellow = (0.5brown - 세로) * (세로 - 2) // yellow = -세로^2 + (0.5brwon + 2)세로 -brown // 세로^2 - (0.5brown +2)세로 + brown + yellow = 0 // brown+yellow의 약수중에 가로와 세로가 있다 function solution(brown, yellow) { let result = []; let divisorArr = findDivisor(brown + yellow); for (let i = 0; i < divisorArr.length; i++) { if (divisorArr[..

다음 큰 숫자

코드 function solution(n) { let nCount = n.toString(2).match(/1/g).length; while (n++) { if (n.toString(2).match(/1/g).length == nCount) return n; } } 다른 사람의 쉬프트를 이용한 빠른 계산 function solution(n) { var i, j; for (i = 0; !(n & 1); i++) {n = n >> 1; } // 1을 찾을때까지 우로 쉬프트, 쉬프트 횟수 = i for (j = 0; n & 1; i++, j++) {n = n >> 1; } // 0을 찾을때까지 우로 쉬프트, 1의 갯수 = j for (j--, n++; i !== j; i--) {n = n

다리를 지나는 트럭

코드 function solution(bridge_length, weight, truck_weights) { let bridgeTemp = Array(bridge_length).fill(0); let second = 0; while (truck_weights.length > 0) { bridgeTemp.unshift(0); bridgeTemp.pop(); const bridgeTempSum = bridgeTemp.reduce(function add(sum, cur) { return sum + cur; }, 0); if (bridgeTempSum + truck_weights[0] 0 || truck_weights.length > 0) { // 1. 현재 시간이, 큐 맨 앞의 차의 '나갈 시간'과 같다면 내..