(JS)프로그래머스 Lv.1 덧칠하기

김진영·2023년 4월 15일
0

알고리즘

목록 보기
3/7
post-thumbnail

🍀 코드

function solution(n, m, section) {
    let answer = 0;
    let std = 0;  // 현재까지 칠한 영역
    
    section.forEach(el => {
        // 현재까지 칠한 영역을 넘어선 경우
        if (el > std) {
            // 롤러의 길이 만큼 1회 칠해준다
            std = el + m - 1;
            answer++;
        }
    })
    
    return answer;
}

입력값의 제한(10의 5승) 때문에 이중 for문을 사용한 풀이는 고려하지 않았습니다.
처음에는 1부터 n까지 배열을 만들어야 하나 고민했습니다.
하지만 그리디 문제라는 사실을 알아차린 순간 section 배열에 주목했습니다.
현재까지 칠한 영역의 마지막을 나타내는 변수(std)만 선언하면 쉽게 풀 수 있는 문제입니다.

🍿 참고

flag 사용

flag(기준) 역할을 하는 변수를 선언하면 문제 풀이에 도움이 됩니다.

profile
기록해서 남길래요

0개의 댓글