새소식

반응형
250x250
Leetcode

[리트코드] Introduction - Max Consecutive Ones

  • -
728x90
반응형

 

 

숫자로 된 배열이 주어졌을 때, 1이 연속되게 나오는 횟수가 제일 큰 것을 구해야 한다.


 

먼저 처음 들었던 생각은 '1 뒤에 1이 올 때와 1 뒤에 0이 올 때로 나눠서 풀어야하나..?' 였다.

그래서 시도했던 로직은 제일 마지막 인덱스와 나머지를 구분한 뒤 케이스를 나눠주는 것이었다.

  • index < nums.length - 1 일 때 -> 1 뒤에 1이 올 때, 1 뒤에 0이 올 때
  • index == nums.length - 1 일 때 -> 1일 때, 0일 때
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
     
        int max = 0;
        int count = 0;
        
         for(int i = 0; i < nums.length; i++) {
            if(i < nums.length - 1) {
                if(nums[i] == 1 && nums[i + 1] == 1 || nums[i] == 1 && nums[i + 1] == 0) {
                    count++;
                } else {
                    if(count > max) {
                        max = count;
                        count = 0;
                    }
                }
            } else {
                if(nums[i] == 1) {
                    count++;
                }
                
                if(count > max) {
                    max = count;
                    count = 0;
                }
            }
        }
        
        return max;
    }
}

 

이렇게 푼 후 인터넷 서칭을 한 후 너무 어렵게 풀었다는 것을 깨달았다...

그냥 1일 때 count 올려주고 0일 때 count를 초기화 시켜주면 되었다..

 

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
     
        int max = 0;
        int count = 0;
             
        for(int i = 0; i < nums.length; i++) {
            if(nums[i] == 1) {
                count++;
                if(count > max) {
                    max = count;
                }
            } else {
                count = 0;
            }
        }
        
        return max;
    }
}

 

길이부터 확 줄어든 코드를 볼 수 있었다.

 

너무 어렵게 생각하지 말자!

 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.