Check If All 1's Are at Least Length K Places Away - Leetcode 1437 - Python
- 이진 배열에서 모든 '1'이 서로 최소
k 칸 이상 떨어져 있는지 확인하는 문제입니다. 📏
- 두 '1' 사이의 거리는 그 사이에 있는 '0'의 개수로 정의됩니다. 🔢
- 인접한 '1'들 사이의 거리만 확인하면 충분합니다. 인접한 '1'들이 조건을 만족하면 다른 모든 '1'들도 만족합니다. 💡
- 배열을 왼쪽에서 오른쪽으로 스캔하며 연속된 '0'의 개수(
spaces)를 추적하는 방식으로 해결합니다. ➡️
- '0'을 만나면
spaces 카운터를 1 증가시킵니다. ➕
- '1'을 만나면 현재
spaces 값이 k보다 작은지 확인합니다. 만약 작다면 즉시 false를 반환하고, 그렇지 않다면 spaces를 0으로 재설정합니다. ❌✅
spaces 변수를 k로 초기화하는 것이 중요합니다. 이는 첫 번째 '1'이 항상 유효하게 처리되도록 보장하며, 그 이후부터 실제 거리 계산이 시작됩니다. 🚀
- 이 알고리즘은 선형 시간 복잡도 O(N)와 상수 공간 복잡도 O(1)로 문제를 해결합니다. ⏱️💾
데브허브 | DEVHUB | Check If All 1's Are at Least Length K Places Away - Leetcode 1437 - Python