문제
바이너리 arr(0 또는 1만 포함하는 배열), arr을 첫 번째 인수로, 숫자 num을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.
배열에 있는 최대 숫자 0을 1로 변경할 수 있으며, 이러한 변경을 수행한 후 함수는 1만 포함하는 가장 긴(인접한) 하위 배열의 길이를 반환해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2;
그러면 출력은 다음과 같아야 합니다. -
const output = 6;
출력 설명
두 개의 0을 1로 변경하면 배열의 마지막 6개 요소가 1이 되기 때문입니다.
예시
이에 대한 코드는 -
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2; const longestOnes = (arr = [], num = 1) => { let max = 0; let left = 0; let curr = num; for(let right = 0; right < arr.length; right++){ if(arr[right] === 0){ curr -= 1; }; while(curr < 0){ if(arr[left] === 0){ curr += 1; }; left += 1; }; max = Math.max(max, right - left + 1); }; return max; }; console.log(longestOnes(arr, num));
출력
콘솔의 출력은 -
6