Programmers Algorithm - 덧칠하기

Myung Jin Kim·2023년 9월 17일
0

해당 문제는 최소한의 섹션을 만들고 해당 섹션의 갯수를 구하는 문제다.

처음에는 Math Object 의 min, max 를 통해서 칠할 수 있는 구역을 구하고 중복되는 영역을 삭제하는 방식으로 구하려고 했지만 칠해야 하는 구역 자체를 구하는게 아니라 횟수를 구하는 것이기에 다음과 같은 방식으로 문제를 처리했다.

function solution(n, m, section) {
    let paintedRange = null;
    const paintCnt = section.reduce((total, current, index) => {
        paintedRange = paintedRange || current + m - 1;
        const nextPaintPoint = section[index + 1];
        if(nextPaintPoint && paintedRange >= nextPaintPoint) {
            return total;
        }
        if(!nextPaintPoint) {
            return total;
        }
        paintedRange = null;
        return total + 1;
    }, 1);
    return paintCnt;
}    
profile
개발을 취미로 하고 싶은 개발자를 목표로 살고 있습니다

0개의 댓글