반응형
1. 문제
- 0과 1로 이루어진 배열이 주어질 때, 연속된 1이 가장 많이 나오는 횟수는?
2. 해결
type AccType = {max: number; value :number; prev: number | null}
function findMaxConsecutiveOnes(nums: number[]): number {
const result = nums.reduce((acc: AccType, current) => {
acc.value += current;
if(current === 0 && acc.value !== 0) {
acc.max = Math.max(acc.max, acc.value);
acc.value = 0;
}
return acc
}, {max: 0, value :0, prev: null})
return Math.max(result.max, result.value);
};
- 연속된 1을 찾아야 하니까 뭐 중간에서 끊고 어쩌고 할 수가 없을 거 같아서 단순히 반복하면서 누산기를 이용해 계산해줬다.