문제
이진 배열(0과 1로만 구성된 배열) arr을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다. 최대 하나의 0을 뒤집을 수 있는 경우 함수는 이 배열에서 연속 1의 최대 수를 찾아야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr = [1, 0, 1, 1, 0];
그러면 출력은 다음과 같아야 합니다. -
const output = 4;
출력 설명
배열의 인덱스 1에서 0을 뒤집으면 4개의 연속적인 1이 나옵니다.
예시
이에 대한 코드는 -
const arr = [1, 0, 1, 1, 0]; const findMaximumOne = (nums = []) => { let count = 0; let first = -1; let i =0, j = 0; let res = -Infinity; while(j < nums.length){ if(nums[j] === 1){ res = Math.max(res, j-i+1); }else{ count++; if(count==2){ i = first + 1; count--; }; first = j; }; j++; }; return res; }; console.log(findMaximumOne(arr));
출력
콘솔의 출력은 -
4