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(기준) 역할을 하는 변수를 선언하면 문제 풀이에 도움이 됩니다.