댈팽이 2024. 3. 13. 23:33
728x90

1. 구간 합 이론

 

합 배열 S는 기존의 배열 A가 있을 때, 일정 범위의 합을 구해둔 배열이다.

미리 합 배열을 구해두면 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소한다.

 

합 배열이 없는 경우에는 배열 A를 순회해야 구할 수 있으므로 최악의 경우 0부터 n까지 돌게 된다.

따라서 이 경우 O(N)이 된다.


2. 구간 합 공식

  • 합 배열을 만드는 공식 : S[i] = S[i-1] + A[i]
  • 구간 합을 구하는 공식 : S[j] - S[i-1] (i에서 j까지의 합)

합 배열이 있는 경우에는 시간 복잡도가 O(1)이 된다.

이는 구간 합을 구할 때 특정 인덱스의 값을 참조해야 하는데 이 시간 복잡도가 O(1)이기 때문이다.

 

위 공식들을 이용하여 합 배열을 만들고 구간 합을 구하면 시간 복잡도를 줄일 수 있다.


3. 예제 문제

 

[11659] 구간 합 구하기 4 (JAVA)

# 문제 설명 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가

spicyrisotto.tistory.com

 

[11660] 구간 합 구하기 5 (JAVA)

# 문제 설명 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있

spicyrisotto.tistory.com

 

728x90