상자의 넓이와 주사위의넓이 구하는법만 알면 쉬운문제
첫번째 방법
가로 10 세로 8 높이 6 일때
모서리 길이가 3인 주사위는
가로 3개 세로 2개 높이 2개가 들어갈 수 있음function solution(box, n) { const garo = Math.floor(box[0] / n); const sero = Math.floor(box[1] / n); const height = Math.floor(box[2] / n); return garo * sero * height; }
function solution(n) { let answer = 0; for(let i = n; i >= 1; i--) { // i가 합성수인지 비교해야 하는 숫자 let isCount = false; for(let num = 2; num < i - 1; num++) { // 1 과 n은 나눠지니 2와 i - 1 까지 반복 if(i % num === 0) { //합성수 isCount = true; } } if(isCount) { answer += 1; } } return answer; }
함수 분리 방법
const getIsCount = (i) => { let isCount = false; for(let num = 2; num < i - 1; num++){ if(i % num === 0){ // 합성수 isCount = true; } } return isCount; } function solution(n) { let answer = 0; for(let i = n; i >= 1; i--) { // i가 합성수인지 비교해야 하는 숫자 const isCount = getIsCount(i); if(isCount) { answer += 1; } } return answer; }
함수 로 나누면 디버깅할때 보기 좋게 확인할 수 있음
sort 함수를 이용하는 방법
function solution(numbers) { var answer = 0; let newArr = numbers.sort((a,b) => b - a); return newArr[0] * newArr[1] } // numbers 를 내림차순으 정리하고 // 배열의 처음과 두번째를 곱한다 // 첫번째 숫자가 0 일 경우 제외
Max()함수를 이용하는 방법
function solution(numbers) { let maxValue = -1; for(let i = 0; i < numbers.length;i++){ for(let j=0; j < numbers.length;j++){ if(i === j) continue; maxValue = Math.max(maxValue, numbers[i] * numbers[j]) } } return maxValue; }
Max함수를 이용하지만 이중루프 와 배열이 클경우
시간복잡도가 O(n^2) 일 수 있음
const getFactorial = (i) => { let result = 1; for(let v = 1; v <=i; v++){ result *= v; } return result; } function solution(n) { var answer = 0; for(let i = 1; ;i++){ const result = getFactorial(i); if(n < result) { return i - 1; } } return answer; }
'getFactorial' 함수는 주어진 수의 팩토리얼을 계산하는 함수입니다. for 루프를 사용하여 1부터 주어진 수까지의 모든 정수를 곱한 값을 반환합니다.
'solution' 함수는 'getFactorial' 함수를 사용하여 입력된 숫자 n보다 작거나 같은 수 중에서 가장 큰 팩토리얼의 인덱스를 찾습니다. 이를 위해 for 루프를 사용하여 'getFactorial' 함수를 호출하고, n 보다 작거나 같은 팩토리얼의 값을 찾습니다. n보다 큰 팩토리얼의 값을 찾으면 i - 1을 반환합니다.