Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(487. Max Consecutive Ones II)

silvergoni 2022. 4. 26. 07:41
반응형

https://leetcode.com/problems/max-consecutive-ones-ii/

 

1. 2022/04/26 시도

소요시간: 10분

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int prev = 0;
        int counter = 0;
        int max = 0;
        for (int i=0; i<nums.length; i++) {
            if (nums[i] == 0) {
                max = Math.max(max, prev + counter);
                prev = counter+1;   // even if counter is 0, it can be 1 length
                counter = 0;
            } else {
                counter++;
            }
        }
        max = Math.max(max, prev + counter);  // edge case like [...,0,1]
        
        return max;
    }
}

풀이 접근 과정

0이 나올 때, 이전 최대값을 기억해둔다.
- 앞에 아무것도 없다면 1이 이전값으로 세팅된다.
- 앞에 1이 있었다면 1의 갯수 + 1이 이전값으로 세팅된다.

1의 갯수는 temp에서 세어준다.

마지막에 순서대로 [ ... 0, 1]이 나온경우, 처리가 필요하므로 max값을 for문 밖에서 다시 한번 비교한다.

 

느낀점

  • 눈으로 보면 0을 1로 치환하면 되는데 이걸 어떻게 코딩하느냐고 관건이었다.
  • 이전 길이값만 잘 기억하면 풀 수 있겠다는 생각이 들어 위와 같이 코딩할 수 있었다.

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형