[๊ธฐ๋ณธ] ํ•ฉ๋ฐฐ์—ด๊ณผ ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ

2025. 3. 8. 23:13ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 

ํ•ฉ๋ฐฐ์—ด๊ณผ ๊ตฌ๊ฐ„ํ•ฉ

ํ•ฉ๋ฐฐ์—ด์€ ํŠน์ • ๋ฐฐ์—ด์˜ ๋ˆ„์  ํ•ฉ์„ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด๋กœ, ๊ตฌ๊ฐ„ํ•ฉ์„ ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ 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.13
[๊ธฐ๋ณธ] ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ  (0) 2025.03.10
[๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰] ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)  (0) 2025.02.12
์ฃผ์š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์‹œ๊ฐ„๋ณต์žก๋„  (0) 2025.02.07
ํ•˜๋…ธ์ด์˜ ํƒ‘ ์ดํ•ดํ•˜๊ธฐ  (2) 2022.02.18
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๊ธฐ๋ณธ] ๊ตฌ๊ฐ„ํ•ฉ ์‘์šฉ
  • [๊ธฐ๋ณธ] ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ
  • [๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰] ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)
  • ์ฃผ์š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์‹œ๊ฐ„๋ณต์žก๋„
์„œ์•„๋ž‘๐Ÿ˜ƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
Just Do It๐Ÿ’ช
  • ์„œ์•„๋ž‘๐Ÿ˜ƒ
    G-Stack
    ์„œ์•„๋ž‘๐Ÿ˜ƒ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (144)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (78)
        • C++ ๊ธฐ์ดˆ (28)
        • C++ ์‘์šฉ (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ (31)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • ๋””์ž์ธํŒจํ„ด (5)
      • ์„œ๋น„์Šค & ํˆด (7)
      • ํŠธ๋ Œ๋“œ&์ด์Šˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • G์Šคํƒ์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Thread
    pointer
    ํŒŒ์ผ์ž…์ถœ๋ ฅ
    fork
    go
    ํŒŒ์ด์ฌ
    ๋””์ž์ธํŒจํ„ด
    ์Šคํƒ
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ๋ฐ˜๋ณต๋ฌธ
    ์ƒ์†
    ํŒจํ‚ค์ง€
    RAM
    ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ
    ํฌ์ธํ„ฐ
    component
    ๋ณ€์ˆ˜
    ์žฌ๊ท€
    init
    STD
    ๋ฉ”๋ชจ๋ฆฌ
    ๋ฐฐ์—ด
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํ•จ์ˆ˜
    ์กฐ๊ฑด๋ฌธ
    ํ•˜๋“œ๋””์Šคํฌ
    cpu
    ์ปดํ“จํ„ฐ
    c++
    c
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์„œ์•„๋ž‘๐Ÿ˜ƒ
[๊ธฐ๋ณธ] ํ•ฉ๋ฐฐ์—ด๊ณผ ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”