본문으로 바로가기
쉬움

Max Consecutive Ones

코드 라인과 단계 ID를 동기화하고, 변수/포인터/배열·행렬·그래프 엔티티의 상태 스냅샷을 단계마다 갱신한다.

입력
1함수 최대연속1(nums):2  현재 = 0,  최대 = 03  반복 i = 0  n-1:4    만약 nums[i] = 1:5      현재 = 현재 + 16      최대 = max(최대, 현재)7    아니면: 현재 = 0        // 끊김8  반환 최대
변수
i
0
nums[i]
1
현재
1
최대
1

1 / 71이 이어져 현재 연속이 1 이 됩니다.

1이 이어지면 현재 길이를 늘려 최댓값을 갱신하고, 0에서 0으로 되돌린다.

왜 헷갈리는가

가장 단순한 '진행 중 카운터' 패턴이라 쉬워 보이지만, 이 형태가 슬라이딩 윈도우·런 길이 인코딩 등 더 큰 문제의 뼈대가 된다.

핵심 아이디어

현재 연속 길이와 지금까지 최댓값 두 변수를 들고 한 번 훑는다. 조건이 이어지면 늘리고, 끊기면 0으로 리셋한다.

복잡도

시간 O(n)·공간 O(1). 한 번의 스캔으로 끝난다.

실무에서 어디에 쓰나

'가장 긴 연속 구간'은 모니터링·인코딩에서 흔하다.

  • 가동/장애: 최장 연속 정상(또는 장애) 구간 측정(uptime/streak)
  • 압축: 런 길이 인코딩(RLE)의 연속 구간 길이 계산
  • 이상 탐지: 임계 초과가 연속으로 이어진 최장 구간
  • 사용자 지표: 연속 출석·연속 성공 같은 streak 계산

흔한 실수

끊길 때 최댓값 갱신을 놓치기(리셋 전에 이미 갱신했으면 안전). 조건을 '1'로 고정하지 말고 일반화 가능.

기억할 것

  • 현재·최대 두 변수면 충분.
  • 끊기면 0으로 리셋.
  • streak·RLE의 기본형.
  • 슬라이딩 윈도우의 입문.
Max Consecutive Ones | KIE