구명보트 코드 function solution(people, limit) { let boat = []; let num = 1; people = people.sort((a, b) => b - a); for (let i = 0; i limit / 2) { boat.push([people[i]]); } else { if (boat[boat.length - num][0] + people[i] 코딩 테스트/프로그래머스 level2 2022.09.10
행렬의 곱셈 코드 function solution(arr1, arr2) { let result = []; for (let i = 0; i < arr1.length; i++) { let temp = []; for (let j = 0; j < arr2[0].length; j++) { let sum = 0; for (let k = 0; k < arr2.length; k++) { sum += arr1[i][k] * arr2[k][j]; } temp.push(sum); } result.push(temp); } return result; } 처음에는 2중 for문으로 했는데 3중 for문이 필요했다 코딩 테스트/프로그래머스 level2 2022.09.09
짝지어 제거하기 코드 function solution(s) { let stack = []; for (let i = 0; i < s.length; i++) { if (stack[stack.length - 1] === s[i]) stack.pop(); else { stack.push(s[i]); } } return stack.length?0:1 } 코딩 테스트/프로그래머스 level2 2022.09.09
예상 대진표 코드 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처럼 맞붙을 경우는 어차.. 코딩 테스트/프로그래머스 level2 2022.09.09
영어 끝말잇기 코드 function solution(n, words) { let used = [words[0]]; for (let i = 1; i < words.length; i++) { if ( !used.includes(words[i]) && words[i][0] === used[used.length - 1][used[used.length - 1].length - 1] ) { used.push(words[i]); } else { return [(i % n) + 1, parseInt(i / n) + 1]; } } return [0,0] } 코딩 테스트/프로그래머스 level2 2022.09.09
카펫 코드 // 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[.. 코딩 테스트/프로그래머스 level2 2022.09.09
다음 큰 숫자 코드 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 코딩 테스트/프로그래머스 level2 2022.09.09
다리를 지나는 트럭 코드 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. 현재 시간이, 큐 맨 앞의 차의 '나갈 시간'과 같다면 내.. 코딩 테스트/프로그래머스 level2 2022.09.09
피보나치 수열 0, 1, 1, 2, 3, 5, 8... //! 재귀함수를 이용한 0(2^N) 방법 function fibonacci(num) { if (num 코딩 테스트/알고리즘 공부 2022.09.09
피보나치 수 코드 function solution(n) { let fiboArr = [0, 1]; for (let i = 2; i 코딩 테스트/프로그래머스 level2 2022.09.08