프로그래머스 Lv0 day11

박상훈·2023년 2월 21일
0

프로그래머스LV0

목록 보기
5/6

🎲주사위의 개수

상자의 넓이와 주사위의넓이 구하는법만 알면 쉬운문제

첫번째 방법


가로 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을 반환합니다.

profile
다들 좋은 하루 되세요

0개의 댓글