문자열 밀기

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 AB가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

function solution(A, B) {
    let answer = 0;
    let aArr = A.split('');

    for(let i = 0; i < A.length; i++) {
        if(aArr.toString().replaceAll(',', '') === B) break;

        aArr.unshift(aArr[A.length - 1]);
        aArr.pop();
        answer += 1;

        if(answer === A.length) answer = -1;
    }

    return answer;
}

종이 자르기

머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.

정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.

function solution(M, N) {
    var answer = 0;
    return (M - 1) + ((N - 1) * M);
}

연속된 수의 합

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 numtotal이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

function solution(num, total) {
    let div = Math.floor(total / num);
    let sum = 0;

    while(true) {
        for(let i = 0; i < num; i++) {
            sum += div + i;
        }

        if(sum === total) {
            break;
        } else if(sum < total) {
            div += 1;
            sum = 0;
        } else if(sum > total) {
            div -= 1;
            sum = 0;
        }
    }

    let answer = [];

    for(let i = 0; i < num; i++) {
        answer.push(div + i);
    }

    return answer;
}

다음에 올 숫자

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

function solution(common) {
    /*
     * 등차수열 혹은 등비수열이 아닌 경우가 없고,
     * 등비수열인 경우 공비는 0이 아닌 정수
     */
    return common[1] - common[0] === common[2] - common[1] ? common[common.length - 1] + (common[1] - common[0]) : common[common.length - 1] * (common[1] / common[0]);
}

중간중간 일정 때문에 못푸는 날이 있었는데, 아무튼 프로그래머스 입문캘린더 종료.

'코딩테스트' 카테고리의 다른 글

뇌주름 살리기 - 21  (0) 2025.02.08
뇌주름 살리기 - 20  (0) 2025.02.06
뇌주름 살리기 - 19  (0) 2025.02.04
뇌주름 살리기 - 18  (0) 2025.02.02
뇌주름 살리기 - 17  (0) 2025.01.31

+ Recent posts