피드로 돌아가기
Dev.toFrontend
원문 읽기
중첩 루프를 O(n²)에서 O(n)로 바꾸는 누적 상태 유지 기법
Running State Pattern — LeetCode #1480: Running Sum of 1D Array
AI 요약
Context
배열의 각 인덱스까지의 누적 합을 구할 때, 단순히 모든 이전 요소를 다시 더하는 중첩 루프 구조는 동일한 계산을 반복한다. result[2]를 구할 때 이미 result[1]을 계산했음에도 다시 처음부터 합을 구한다.
Technical Solution
- 배열 전체를 순회하며 단일 합계 변수를 유지한다.
- 각 단계에서 현재 요소를 합계에 더한 뒤 결과 배열에 저장한다.
- result[i] = result[i-1] + nums[i] 공식으로 이전 결과를 재활용한다.
- 입력 배열을 직접 수정하는 제자리(in-place) 변형도 가능하다.
- 루프 불변량으로 "step i에서 sum은 nums[0]부터 nums[i-1]까지의 합"을 증명한다.
실천 포인트
배열에서 'running', 'cumulative', 'prefix' 키워드가 포함된 문제에서 중첩 루프가 발견될 때, 내부 루프가 항상 인덱스 0에서 시작한다면 합계 변수를 순회하며 누적하는 방식으로 O(n) 시간 복잡도로 변환할 수 있다.