Bomb Kirby Running

코딩 테스트 챌린지

코딩 테스트 11

^. ̫ .^ 2023. 5. 29. 19:19

728x90

문제1 주사위의 개수

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n  box의 원소
  • 주사위는 상자와 평행하게 넣습니다.

입출력 예

box n result
[1, 1, 1] 1 1
[10, 8, 6] 3 12
function solution(box, n) {
    let answer = 1;
    for(let i=0; i<3; i++){
        answer *= Math.floor(box[i] / n)
    }
    return answer;
}

결과값을 저장할 변수 answer를 1로 초기화합니다

3번 반복하면서 각 차원의 크기를 n으로 나눈 몫을 answer에 곱합니다

계산된 answer를 반환합니다.

 

문제2 합성수 찾기

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 100
n result
10 5
15 8
function solution(n) {
    let answer = 0;
    for(let i = n; i >= 1; i--){
        let isCount = false;
        for(let num = 2; num < i-1; num++){
            if(i % num === 0){
                isCount = true;
            }
        }
        if(isCount){
            answer += 1;
        }
    }
    return answer;
}

결과값을 저장할 변수 answer를 0으로 초기화합니다

n부터 1까지 반복하면서 각 숫자 i에 대해서 다음 동작을 수행합니다

소수 여부를 판별하기 위해 isCount라는 변수를 false로 초기화합니다

2부터 i-1까지 반복하면서 numi로 나누어떨어지는지 확인합니다

만약 inum으로 나누어떨어지면, isCount를 true로 설정합니다

isCount가 true인 경우, answer를 1 증가시킵니다

반복이 완료된 후에 answer를 반환합니다

 

문제3 최댓값 만들기(1)

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요..

 

제한사항

  • 0 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers의 길이 ≤ 100
n result
[1, 2, 3, 4, 5] 20
[0, 31, 24, 10, 1, 9] 774
function solution(numbers) {
    
    let maxValue = -1;
    for(let i=0; i<numbers.length; i++){
        for(let j=i+1; j<numbers.length; j++){
            maxValue = Math.max(maxValue, numbers[i] * numbers[j]);
        }
    }
    return maxValue;
}

가장 큰 값을 저장할 변수 maxValue를 -1로 초기화합니다

첫 번째 반복문을 통해 numbers 배열의 각 요소를 순회합니다. 첫 번째 선택한 숫자를 numbers[i]로 지정합니다

두 번째 반복문을 통해 첫 번째 선택한 숫자 이후의 요소들을 순회합니다. 두 번째 선택한 숫자를 numbers[j]로 지정합니다

numbers[i]numbers[j]를 곱한 결과를 maxValue와 비교하여 더 큰 값을 maxValue에 저장합니다

모든 반복이 완료된 후에 maxValue를 반환합니다

 

문제4 팩토리얼

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.

  • i! ≤ n

 

제한사항

  • 0 < n ≤ 3,628,800
n result
3628800 10
7 3
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;
        }
    }
}

팩토리얼 값을 계산하는 getFactorial 함수를 정의합니다. 함수 내에서는 반복문을 통해 1부터 i까지의 값을 곱하여 결과를 반환합니다

solution 함수 내에서 결과값을 저장할 변수 answer를 0으로 초기화합니다

무한 루프를 돌면서 i를 1부터 증가시키며 팩토리얼 값을 계산합니다

팩토리얼 값 result가 주어진 숫자 n보다 크면, 이전 i 값인 i - 1을 반환합니다

반복이 계속되며 주어진 조건을 만족할 때까지 반복합니다