Can Place Flowers(leetcode, 605)

NJW·2023년 3월 20일
0

코테

목록 보기
138/170

문제 설명

꽃이 n개 주어질 때 꽃들이 없는 위치인 0에 서로 붙여 놓지 않고 둘 수 있는지를 구하는 문제다.

문제 접근

첫 번째 접근

처음에는 나눗셈의 나머지인가 생각을 했다. 무언가 규칙이 있을 거라 생각했지만, 절대 보이지 않았 다른 사람들의 풀이를 참고했다...

두 번째 접근

그냥 반복문으로 풀면 되는 문제였다..! 다만 조건문을 신경써서 써 줘야 한다. 현재 위치가 0이라 꽃을 둘 수 있고 현재 위치가 0이거나 그 앞의 위치에 꽃이 없으며 현재 위치가 맨 마지막 이거나 그 뒤의 위치에 꽃이 없다면 꽃을 하나 둔다는 의미로 n--를 해준다. 그리고 만일 n이 0이 되면 꽃을 전부 적절한 위치에 놓았다는 의미이니 참을 반환해준다. n이 0이 아니면 현재 위치에 1을 놓는다.

만일 참을 반환하지 못했다면 이는 n이 0이 아니라는 의미 즉, 꽃이 여전히 존재한다는 소리이므로 거짓을 반환한다.

또한 만일 n이 0일 경우는 처음부터 참을 반환해야 한다.

코드

Java

class Solution {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {

        if(n == 0){
            return true;
        }
        
        for(int i=0; i<flowerbed.length; i++){
            if(flowerbed[i] == 0 && (i == 0 || flowerbed[i-1] == 0) && (i == flowerbed.length-1 || flowerbed[i+1] == 0)){
                n--;

                if(n == 0){
                    return true;
                }

                flowerbed[i] = 1;
            }
        }

        return false;
    }
}

Python

class Solution(object):
    def canPlaceFlowers(self, flowerbed, n):
        zero_count = 0

        if n == 0:
            return True

        for flower in range(len(flowerbed)):
            if (flowerbed[flower] == 0) and (flower == 0 or flowerbed[flower-1] == 0) and (flower == len(flowerbed)-1 or flowerbed[flower+1] == 0):
                n = n - 1

                if n == 0:
                    return True
                
                flowerbed[flower] = 1
        

        return False
profile
https://jiwonna52.tistory.com/

0개의 댓글