코딩테스트

뇌주름 살리기 - 15

라퐁 2025. 1. 24. 21:50

최대값 만들기 (2)

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

function solution(numbers) {
    const sortNum = numbers.sort((x, y) => y - x);

    const front = sortNum[0] * sortNum[1];
    const back = sortNum[sortNum.length - 2] * sortNum[sortNum.length - 1];

    return front >= back ? front : back;
}

다항식 더하기

한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.

function solution(polynomial) {
    let coef = 0;
    let number = polynomial.split(' ').filter((x) => !x.includes('x') && x !== '+').reduce((x, y) => x + Number(y), 0);

    polynomial.split(' ').filter((x) => x.includes('x')).forEach(function(x) {
        if(x.replace('x', '') === '') {
            coef += 1;
        } else {
            coef += Number(x.replace('x', ''));
        }
    })

    let answer = '';

    if(coef === 1 && number > 0) {
        answer += `x + ${number}`;
    } else if (coef === 1 && number === 0) {
        answer += 'x';
    }else if(coef > 0 && number > 0) {
        answer += `${coef}x + ${number}`;
    } else if(coef > 0 && number === 0) {
        answer += `${coef}x`;
    } else {
        answer += number.toString();
    }

    return answer;
}

숨어있는 숫자의 덧셈 (2)

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {
    return my_string.replaceAll(/[a-zA-Z]/g, ',').split(',').filter((x) => x !== '').reduce((x, y) => x + Number(y), 0);
}

안전지대

다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.

지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다.
지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.

function solution(board) {
    let answer = JSON.parse(JSON.stringify(board));
    let pi = 0, mi = 0, pj = 0, mj = 0;

    for(let i = 0; i < board.length; i++) {
        for(let j = 0; j < board.length; j++) {
            if(board[i][j] === 1) {
                pi = i + 1 === board.length ? i : i + 1;
                mi = i - 1 < 0 ? 0 : i - 1;
                pj = j + 1 === board.length ? j : j + 1;
                mj = j - 1 < 0 ? 0 : j - 1;

                answer[pi][j] = 1;
                answer[pi][pj] = 1;
                answer[pi][mj] = 1;
                answer[mi][j] = 1;
                answer[mi][pj] = 1;
                answer[mi][mj] = 1;
                answer[i][pj] = 1;
                answer[i][mj] = 1;
            }
        }
    }

    return answer.flat().filter((x) => x === 0).length;
}

삼각형의 완성조건 (2)

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

function solution(sides) {
    let answer = 0;

    if(sides[0] + sides[1] <= 3) {
        answer += 1;
    } else {
        answer += Math.max(...sides) - (Math.max(...sides) - Math.min(...sides) + 1);
        answer += (sides[0] + sides[1]) - Math.max(...sides);
    }    

    return answer;
}