
-Code
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
if (flowerbed.length == 1) {
n -= flowerbed[0] == 0 ? 1 : 0;
} else {
for (int i = 0; i < flowerbed.length; i++) {
System.out.println(valid(flowerbed, i));
if (valid(flowerbed, i) && flowerbed[i] == 0) {
flowerbed[i] = 1;
n--;
}
}
}
return n <= 0;
}
private static boolean valid(int[] arr, int idx) {
if (idx == 0)
return arr[idx + 1] == 0;
if (idx == arr.length - 1)
return arr[idx - 1] == 0;
return arr[idx - 1] == 0 && arr[idx + 1] == 0;
}
}
처음에 위와 같이 해서 맞긴 했으나 복잡해서 다른 풀이를 바탕으로 아래와 같이 다시 풀었습니다.
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
for (int i = 0; i < flowerbed.length; i++) {
if (flowerbed[i] == 0) {
int left = i == 0 ? 0 : flowerbed[i - 1];
int right = i == flowerbed.length - 1 ?
0 : flowerbed[i + 1];
if (left == 0 && right == 0) {
flowerbed[i] = 1;
n--;
if (n <= 0)
return true;
}
}
}
return n <= 0;
}
}
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [LeetCode/Java] Reverse Words in a String (0) | 2025.12.19 |
|---|---|
| [LeetCode/Java] Reverse Vowels of a String (0) | 2025.12.19 |
| [LeetCode/Java] Kids With the Greatest Number of Candies (0) | 2025.12.19 |
| [LeetCode/Java] Greatest Common Divisor of Strings (0) | 2025.12.19 |
| [LeetCode/Java] Merge Strings Alternately (0) | 2025.12.19 |