뺄셈으로 모든 구간 합 구하기
상수 시간에 range[l..r]에 답합니다
뺄셈으로 모든 구간 합 구하기은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
진정한 효과
누적 합 배열을 만드는 것은 준비 단계였습니다. 이제 진짜 효과가 나타납니다. 한 번의 뺄셈으로 어떤 구간 합에도 답할 수 있습니다. ⚡
핵심 아이디어
구간 합은 큰 전체 합에서 작은 합 하나를 빼면 됩니다. 누적 합 두 값을 빼면 범위 바깥의 모든 값이 깔끔하게 상쇄됩니다.
공식
l부터 r까지 원소의 합을 구하려면 prefix[r + 1]에서 prefix[l]을 빼면 됩니다. 이 하나의 공식은 모든 구간에 적용됩니다.
range_sum = prefix[r + 1] - prefix[l]작동하는 이유
prefix[r + 1]에는 r까지의 모든 값이 들어 있고, prefix[l]에는 l 이전의 모든 값이 들어 있습니다. 두 값을 빼면 정확히 가운데 구간만 남습니다.
예제로 확인하기
[3, 1, 4]의 누적 합 배열은 [0, 3, 4, 8]입니다. 인덱스 1부터 2까지의 합을 구하려면 8에서 3을 빼면 되고, 결과는 5입니다. 이는 1과 4를 더한 값과 같습니다.
상수 시간 질의
각 질의는 뺄셈 한 번이면 되므로 O(1)에 실행됩니다. 질의가 천 개여도 하나의 질의당 비용은 질의 하나일 때와 같습니다.
인덱스 하나 차이에 주의하기
가장 흔한 실수는 끝점의 인덱스를 잘못 쓰는 것입니다. 앞에 0을 추가했다면 항상 prefix[r + 1]을 사용해야 하며, prefix[r]을 사용하면 안 됩니다. 이 경계를 확인하십시오.
양 끝 포함과 끝점 제외
r을 포함할지 일찍 결정하십시오. 이 공식은 l과 r을 모두 포함하는 구간으로 처리하며, 대부분의 대회 문제도 이를 기대합니다.
함수로 감싸기
작은 보조 함수를 사용하면 로직을 읽기 쉽게 유지하고 인덱스를 한곳에서 관리할 수 있습니다. 수식을 직접 써 넣는 대신 이 보조 함수를 활용하십시오.
def query(l, r):
return prefix[r + 1] - prefix[l]전체 배열 처리하기
전체 배열의 합을 구하려면 l을 0, r을 n - 1로 설정하여 질의하십시오. 공식은 전체 합인 prefix[n]을 반환합니다.
특히 유용한 경우
고정된 배열에 대해 구간 합 질의가 많이 주어지는 문제라면, 누적 합을 사용하여 질의마다 O(n) 반복문을 돌리는 대신 즉시 답을 구할 수 있습니다.
빠른 확인
l부터 r까지의 인덱스 합을 양 끝 포함으로 구하려고 합니다.
정리
이제 prefix[r + 1]에서 prefix[l]을 빼서 모든 구간 합을 O(1)에 구할 수 있습니다. 앞에 0을 추가했을 때의 오프셋에 주의하면 버그 없이 작성할 수 있습니다. ✅
자주 묻는 질문
“뺄셈으로 모든 구간 합 구하기” 강의는 무료인가요?
네 — “뺄셈으로 모든 구간 합 구하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“뺄셈으로 모든 구간 합 구하기”에서 뭘 배우나요?
상수 시간에 range[l..r]에 답합니다 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“뺄셈으로 모든 구간 합 구하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 누적 합 배열 만들기
- 뺄셈으로 모든 구간 합 구하기
- 목표 합을 갖는 부분 배열 개수 세기
- 구간 갱신을 위한 차분 배열