코린이의 소소한 공부노트

[LeetCode/Easy] 1437. Check If All 1's Are at Least Length K Places Away 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1437. Check If All 1's Are at Least Length K Places Away

무지맘 2022. 12. 25. 22:00

1. Input

1) 2진 배열 nums

2) 정수 k

 

2. Output

1) nums 내의 모든 1들이 최소 k만큼 떨어져 있다면 true, 아니면 false를 반환

2) k만큼 떨어져 있다는 것은 11 사이에 k개의 숫자가 있다는 뜻이다.

 

3. Constraint

1) 1 <= nums.length <= 10^5

2) 0 <= k <= nums.length

3) nums[i]0 또는 1이다.

 

4. Example

Input: nums = [1,0,0,0,1,0,0,1], k = 2 -> Output: true

설명:

- 10번째, 4번째, 7번째에 있다.

- 0번째 ~ 4번째는 3만큼 떨어져 있다.

- 0번째 ~ 7번째는 6만큼 떨어져 있다.

- 4번째 ~ 7번째는 2만큼 떨어져 있다.

- 3, 6, 2 >= 2 이므로 true를 반환한다.

 

5. Code

1) 첫 코드(2022/07/08)

if(nums.length==1)
    return false;

int former = 0;
for(int i=0 ; i<nums.length ; i++)
    if(nums[i]==1){
        former = i; break;
    }

int later = 0;
for(int i=former+1 ; i<nums.length ; i++){
    if(nums[i]==1){
        later = i;
        if(later-former-1<k)
            return false;
        former = later;
    }
}

return true;