사이트: HackerRank
난이도: 미디움
분류: Greedy
power plants를 설치여부를 표현하는 배열을 받고, power plants의 영향범위 값 k를 전달받는다. 해당 데이터들을 가지고 전 지역에 전기를 공급하기 위한 최소 설치 비용을 반환하는 문제이다.
해당 문제를 풀다가 집중력이 너무 떨어져 시간이 오래 걸린다고 판단하여, 다른 사람의 풀이를 참조하였다. 문제 자체가 어렵진 않았지만, 집중력 관리를 해야겠다고 생각했다.
function pylons(k, arr) {
let result = 0,
i = 0,
location = i + (k - 1);
while (i < arr.length) {
if (arr[location] === 1) {
i = location + k;
result += 1;
location = i + (k - 1);
if (location >= arr.length) {
location = arr.length - 1;
}
} else {
location--;
if (location < 0 || location <= i - k) {
return -1;
}
}
}
return result;
}
power plants 설치가 가능할 경우 k - 1 만큼 증가 시키고, 설치 불가할 경우 이전 인덱스 값으로 계속 돌아가는 형식으로 코드가 작성되었다.