605. Can Place Flowers

늘보·2021년 8월 21일
0

LeetCode

목록 보기
24/69

💡풀이

/**
 * @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/

LeetCode GitHub

https://github.com/tTab1204/LeetCode

0개의 댓글