Max Consecutive Ones

유길상·2022년 5월 26일
0

자료구조 - 리스트

목록 보기
2/10

문제

전제
이진 배열 nums가 주어졌을때 배열에서 1이 연속되는 최대 수를 반환해줍니다.

예제1

Input: nums = [1,1,0,1,1,1]
Output: 3
설명 : 배열의 시작과 마지막은 각각 최대 2번, 3번 1이 반복됩니다. 연속되는 1의 최대 수는 3입니다.

예제2

Input: nums = [1,0,1,1,0,1]
Output: 2

제약 조건

1 <= nums.length <= 105
nums[i] is either 0 or 1.


Solution

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
    
        int continuity = 0; //1이 연속되는 횟수를 저장
        int result = 0; //하나의 nums배열에서 가장 큰 연속성을 가지는 횟수를 저장
        
        //이진 배열 nums의 길이 보다 작을 때 까지 i가 늘어나며 반복됩니다.
        for(int i = 0; i < nums.length; i++){ 
        	
            if(nums[i] == 1){ //nums[i]의 값이 1일 때
                continuity++;      //1이 더해집니다.
             	if(result < continuity){ //만약 result가 continuity보다 작다면
                    result = continuity; //result가 continuity의 값을 저장해줍니다. 
                }
            }else{
                continuity = 0; //nums[i]의 값이 0이라면 continuity도 0으로 초기화 해줍니다. 
            }
        }
        return result;  // 가장 큰 연속 횟수를 반환해줍니다.
    }
}

for문을 이용해 배열의 길이 만큼 반복하면서 nums[i]의 값이 1일 때 continuity변수에 1을 더해가며 연속되는 횟수를 저장해줍니다.

해당 문제의 조건은 가장 큰 결과 값을 반환해줘야 되기 때문에

반환해줘야 되는 결과 변수인 result가 continuity보다 작다면 result변수에 현재 가장 큰 continuity의 값을 저장해줍니다.

만약 nums[i]의 값이 0이라면 if 조건에 대해 false이므로 continuity의 값을 0으로 초기화 해줍니다.

해당 로직이 for문을 통해 반복되며 result < continuity조건으로 인해 결국 1이 연속되는 가장 큰 횟수가 결과 값으로 반환이 됩니다.

0개의 댓글