ํฉ๋ฐฐ์ด๊ณผ ๊ตฌ๊ฐํฉ
ํฉ๋ฐฐ์ด์ ํน์ ๋ฐฐ์ด์ ๋์ ํฉ์ ์ ์ฅํ๋ ๋ฐฐ์ด๋ก, ๊ตฌ๊ฐํฉ์ ๋น ๋ฅด๊ฒ ๊ณ์ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐฐ์ด์ i๋ฒ์งธ๊น์ง์ ๋์ ํฉ์ ์ ์ฅํ์ฌ, ํน์ ๊ตฌ๊ฐ์ ํฉ์ O(1) ์๊ฐ ๋ณต์ก๋๋ก ๊ตฌํ ์ ์์ต๋๋ค.
ํฉ๋ฐฐ์ด ๊ณ์ฐ
๋ฐฐ์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ํฉ๋ฐฐ์ด S๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
S[i]=A[1]+A[2]+...+A[i]
์ฆ,
- S[0]=0 (๊ธฐ๋ณธ๊ฐ)
- S[i]=S[i−1]+A[i]
๋ฅผ ๋ง์กฑํฉ๋๋ค.
์์
๋ฐฐ์ด A=[2,4,5,7,9,12] ๊ฐ ์ฃผ์ด์ก์ ๋, ํฉ๋ฐฐ์ด S ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
i | A[i] | S[i] |
0 | 0 | 0 |
1 | 2 | 2 |
2 | 4 | 6 |
3 | 5 | 11 |
4 | 7 | 18 |
5 | 9 | 27 |
6 | 12 | 39 |
๊ตฌ๊ฐํฉ ๊ณ์ฐ
๊ตฌ๊ฐํฉ์ ๊ตฌํ๋ ๊ณต์์ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ตฌ๊ฐ i์์ j๊น์ง์ ๊ตฌ๊ฐํฉ์ ๊ตฌํ๋ ๊ณต์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- S[j] - S[i -1]
- ์:
๊ตฌ๊ฐ [2, 5]์ ํฉ์ S[5] - S[1] = 25
๊ตฌ๊ฐ [3, 4]์ ํฉ์ S[4] - S[2] = 12
๊ตฌ๊ฐ [5, 5]์ ํฉ์ S[5] - S[4] = 9
์๊ฐ๋ณต์ก๋ ๋น๊ต
- ๊ธฐ๋ณธ ๋ฐฉ์: ๊ตฌ๊ฐํฉ์ ์ง์ ๋ํ๋ฉด O(N)
- ํฉ๋ฐฐ์ด ์ด์ฉ: ํ ๋ฒ์ ๋บ์ ์ผ๋ก O(1)
์ฆ, ํฉ๋ฐฐ์ด์ ์ฌ์ ์ O(N) ์ ๊ณ์ฐํด๋๋ฉด, ๊ตฌ๊ฐํฉ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
์ค์ ๋ฌธ์
๋ฐฑ์ค 11659: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4(๋งํฌ)
๋ฌธ์
์ N๊ฐ๊ฐ ์ฃผ์ด์ก์ ๋, i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์ ์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํฉ์ ๊ตฌํด์ผ ํ๋ ๊ตฌ๊ฐ i์ j๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ด M๊ฐ์ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง i๋ฒ์งธ ์๋ถํฐ j๋ฒ์งธ ์๊น์ง ํฉ์ ์ถ๋ ฅํ๋ค.
์ ํ
- 1 ≤ N ≤ 100,000
- 1 ≤ M ≤ 100,000
- 1 ≤ i ≤ j ≤ N
์์ ์ ๋ ฅ 1
5 3
5 4 3 2 1
1 3
2 4
5 5
์์ ์ถ๋ ฅ 1
12
9
1
์๊ฐ์ ํ | ๋ฉ๋ชจ๋ฆฌ | ์ ๋ต ๋น์จ |
1 ์ด | 256 MB | 38.466% |
์ฝ๋
// C++ 17
#include <iostream>
#include <vector>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int dataCount, queryCount = 0;
cin >> dataCount >> queryCount;
vector<int> rangeSum;
rangeSum.reserve(dataCount + 1);
rangeSum.push_back(0);
for (int i = 0; i < dataCount; i++)
{
int data;
cin >> data;
rangeSum.push_back(rangeSum[i] + data);
}
for (int i = 0; i < queryCount; i++)
{
int start, end;
cin >> start >> end;
cout << rangeSum[end] - rangeSum[start - 1] << '\n';
}
}
๋ฐฐ์ด ์ ๋ ฅ์ ๋ฐ์๋ง์ ํฉ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ตฌ๊ฐ์ด ์ฃผ์ด์ง๋ ์ฆ์ ๊ตฌ๊ฐํฉ ๊ณต์์ ํตํด ์ถ๋ ฅํ๋ ์ฝ๋์ ๋๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ธฐ๋ณธ] ์คํ ์๋ฃ๊ตฌ์กฐ ํ์ฉ (0) | 2025.03.10 |
---|---|
[๊ทธ๋ํ ํ์] ๊น์ด ์ฐ์ ํ์(Depth First Search, DFS) (0) | 2025.02.12 |
์ฃผ์ ์๋ฃ๊ตฌ์กฐ์ ์๊ฐ๋ณต์ก๋ (0) | 2025.02.07 |
ํ๋ ธ์ด์ ํ ์ดํดํ๊ธฐ (0) | 2022.02.18 |
๋๊ธ