전체 글 247

예상 대진표

코드 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. 현재 시간이, 큐 맨 앞의 차의 '나갈 시간'과 같다면 내..

수학적 지식 모음

제곱근이 정수면 약수의 개수가 홀수이며 제곱근이 정수가 아니면 약수의 개수가 짝수다 자연수 n을 만들 수 있는 연속된 숫자의 합의 개수는 n의 약수중 홀수의 개수이다 (n이 15라면 1+2+3+4+5, 4+5+6, 7+8, 15 약수는 1,3,5,15) // 짝수의 합 const half = ~~(n/2); return half*(half+1); 삼각형의 두 변의 길이가 주어 졌을때 -> [a,b] 나머지 변의 길이가 될 수 있는 정수의 개수는 Math.min(...[a,b]) * 2 - 1 분자와 분모의 최대공약수로 약분하면 기약분수. 기약분수일때 분모의 소인수가 2와 5뿐이면 유한소수. n개 연속된 정수의 합으로 sum을 만들 수 있을때 연속된 정수 배열 구하기 function solution(n, ..

올바른 괄호

코드 function solution(s) { let check = 0; for (let i = 0; i < s.length; i++) { s[i] === "(" ? check++ : check--; if (check < 0) return false; } return check ? false : true; } 처음에 위 코드처럼 했는데 효율성에서 통과가 안되서 function solution(s) { let check = 0; for (let i of s) { i === "(" ? check++ : check--; if (check < 0) return false; } return check ? false : true; } 이것 처럼 for of문을 쓰니까 통과가 됐다 그런데 효율성 문제는 시간복잡도의 ..