코딩테스트

뇌주름 살리기 - 6

라퐁 2025. 1. 13. 21:42

공 던지기

머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.

function solution(numbers, k) {
    let idx = 0;

    if(k === 1) {
        return numbers[idx];
    }

    for(let i = 2; i <= k; i++) {
        idx += 2;

        if(idx >= numbers.length) {
            idx = idx % numbers.length;
        }
    }

    return numbers[idx];
}

배열 회전시키기

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

function solution(numbers, direction) {
    let answer = [];

    if(direction === 'left') {
        for(let i = 0; i < numbers.length; i++) {
            if(i === numbers.length - 1) {
                answer[i] = numbers[0];
            } else {
                answer[i] = numbers[i + 1];
            }
        }
    } else if(direction === 'right'){
        for(let i = 0; i < numbers.length; i++) {
            if(i === 0) {
                answer[i] = numbers[numbers.length - 1];
            } else {
                answer[i] = numbers[i - 1];
            }
        }
    }

    return answer;
}

주사위의 개수

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

function solution(box, n) {
    return Math.floor(box[0] / n) * Math.floor(box[1] / n) * Math.floor(box[2] / n);
}

합성수 찾기

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

function solution(n) {
    let answer = 0;
    let cnt = 0;

    if(n >= 4) {    
        for(let i = 4; i <= n; i++) {
            cnt = 0;

            for(let j = 1; j <= Math.sqrt(i); j++){
                if(j * j === i) cnt += 1;
                if(i % j === 0) cnt += 2;
            }

            if(cnt >= 3) answer += 1;
        }
    }

    return answer;
}

최댓값 만들기 (1)

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

function solution(numbers) {
    numbers.sort((x, y) => y - x);
    return numbers[0] * numbers[1];
}

팩토리얼

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

  • i! ≤ n
function solution(n) {
    const facto = (x) => x <= 1 ? 1 : x * facto(x - 1);

    for(let i = 0; i <= 10; i++) {
        if(facto(i) <= n && facto(i + 1) > n) {
            return i;
        }
    }
}