코딩테스트 풀이/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만큼 떨어져 있다는 것은 1과 1 사이에 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
설명:
- 1은 0번째, 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;