728x90
1. 문제
https://leetcode.com/problems/can-place-flowers/description/?envType=study-plan-v2&envId=leetcode-75
2. 요구사항
1) 길게 이어진 화단(flowerbed)가 있다.
2) 이 화단의 꽃은 서로 인접한 땅에 심을 수 없다.
3) 0은 빈 자리, 1은 이미 꽃이 심어진 자리이다.
4) n은 새롭게 심고자 하는 꽃의 개수이다.
5) 인접한 칸에 꽃을 심을 수 없다는 규칙을 어기지 않고, n개의 꽃을 새로 심을 수 있다면 true를 반환하고, 그렇지 않으면 false를 반환한다.
3. 코드
class Solution {
bool canPlaceFlowers(List<int> flowerbed, int n) {
// flowerbed 배열을 순회
for (int i = 0; i < flowerbed.length; i++) {
// 현재 위치에 꽃이 심어져 있지 않고,
// 왼쪽이 비어있거나 (i == 0 이면 화단의 시작이므로 자동으로 비어있는 것으로 간주)
// 오른쪽도 비어있거나 (i == 마지막 인덱스이면 화단 끝이므로 자동으로 비어있는 것으로 간주)
if (flowerbed[i] != 1 &&
(i <= 0 || flowerbed[i - 1] == 0) &&
(i >= flowerbed.length - 1 || flowerbed[i + 1] == 0)) {
// 현재 위치에 꽃을 심는다
flowerbed[i] = 1;
// 심어야 할 꽃의 개수를 1 줄인다
n--;
}
}
// 모든 꽃을 다 심었거나 더 적게 심었다면 true 반환
return n <= 0;
}
}728x90
'Programming > LeetCode' 카테고리의 다른 글
| [Dart] 700. Search in a Binary Search Tree (0) | 2025.04.18 |
|---|---|
| [Dart] 643. Maximum Average Subarray I (0) | 2025.04.17 |
| [Dart] 392. Is Subsequence (0) | 2025.04.15 |
| [Dart] 383. Ransom Note (0) | 2025.04.14 |
| [Dart] 345. Reverse Vowels of a String (0) | 2025.04.11 |