/**
* @param {number[]} flowerbed
* @param {number} n
* @return {boolean}
*/
var canPlaceFlowers = function (flowerbed, n) {
flowerbed = [0, ...flowerbed, 0]; // << 중요 부분
for (let i = 0; i < flowerbed.length; i++) {
if (
flowerbed[i] === 0 &&
flowerbed[i + 1] === 0 &&
flowerbed[i - 1] === 0
) {
n--;
i++;
}
if (!n) break;
}
console.log('n: ', n);
return n === 0;
};
'중요 부분'이라고 적힌 부분을 제외하면 비교적 어렵지 않게 생각할 것 같다. 저 부분이 중요한 이유는 배열의 양 끝에 꽃을 심어야 하는 경우(배열의 양 끝의 요소를 0 -> 1로 바꿔야 하는 경우)를 고려해야 하기 때문이다. 배열의 양 끝에 꽃을 심는 경우는 반복문 안의 if
조건에 걸리지 않는다.
따라서 반복문 안의 조건에 부합하도록 하기 위해 처음에 flowered
배열의 양 끝에 0
을 추가해줬다.
수정, 지적을 환영합니다!
https://leetcode.com/problems/can-place-flowers/