- ๋ฐฐ์ด์ ์ผ๋ถ ๊ตฌ๊ฐ์ ๋ํ ํฉ์ ๋น ๋ฅด๊ฒ ๊ตฌํ ์ ์๊ฒ ํด์ฃผ๋ ์คํฌ
- n๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋ ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ฐฐ์ด์ ํฉ์ ๊ตฌํ๋ ค๋ฉด O(n)์ด ๊ฑธ๋ฆฌ๋๋ฐ
๋ถ๋ถํฉ์ ์ด์ฉํ๋ฉด ๋ชจ๋ ๋ถ๋ถํฉ์ O(1)์ ๋ฐ๋ก ๊ตฌํ๊ธฐ ๊ฐ๋ฅ
- ๋์ ํฉ์ ๋ฌธ์ ์์ ์์ด์ด ์ฃผ์ด์ง๊ณ ์ด๋ค ๊ตฌ๊ฐ์ ๊ฐ์ ํฉ์ ๊ตฌํด์ผ ํ ๋ ์ฐ์ผ ์ ์์ต๋๋ค.
ex) ๋ค์๊ณผ ๊ฐ์ ๋ฐฐ์ด์ด ์๋ค๊ณ ๊ฐ์ ํ์.
arr = [2 , 5 , 1 , 4 , 3 , 2]
sum = [2 , 7 , 8 , 12 , 15 , 17]
์ ๋ฐฐ์ด์์ ์ฐ์๋ ๊ตฌ๊ฐ์ ํฉ, ์๋ฅผ๋ค์ด arr[2]๋ถํฐ arr[4]๊น์ง์
ํฉ์ ๊ตฌํ๋ ค๊ณ ํ๋ค๋ฉด 3๊ฐ์ ์์๊ฐ์ ์ฐธ์กฐํด์ผํ๋ค.
์ด๋ฌํ ์ ์ ๋ณด์ํ๊ธฐ ์ํด์ ๋์ ํฉ ์์ด sum์ ๋์
ํ๋ค.
โ sum[R]๋ arr[0]๋ถํฐ arr[R]๊น์ง์ ๋ชจ๋ ์์์ ํฉ์ ๊ฐ์ผ๋ก ๊ฐ๋๋ค. ๋ํ arr[L]๋ถํฐ arr[R]๊น์ง์ ๋ถ๋ถํฉ์ sum[R] - sum_list[L-1]๋ก ์ ์ํ ์ ์๋ค.
๋นจ๊ฐ ๋ถ๋ถ (3, 3)๋ถํฐ (5, 5)์ ํฉ์ ์ด๋ป๊ฒ ๊ตฌํ ์ ์์๊น?
prefixSum[5][5]๋ (1,1)๋ถํฐ (5,5)๊น์ง์ ํฉ์ ๋ํ๋ด๋ฏ๋ก ํด๋น ๋ถ๋ถ์์
์ ๋
น์ ๋ถ๋ถ(prefixSum[2,5])์ ๋นผ์ฃผ๊ณ , ๋
ธ๋ ๋ถ๋ถ(prefixSum[5][2])์ ๋นผ์ฃผ๊ณ ,
๋๋ฒ ๋น ์ง ๋
น์๊ณผ ๋
ธ๋์์ด ๋ง๋๋ ๋ถ๋ถ(prefixSum[2][2])๋ฅผ ํ๋ฒ ๋ ๋ํด์ฃผ๋ฉด ๋ ๊ฒ์ด๋ค.
์ฆ, (3,3)๋ถํฐ (5,5)๊น์ง์ 2์ฐจ์ ๊ตฌ๊ฐํฉ = prefixSum[5][5] -
prefixSum[5][3-1] - prefixSum[3-1][5] + prefixSum[3-1][3-1] = 36
(x1, y1)๋ถํฐ (x2, y2) ๊น์ง(x1<=x2, y1<=y2)๋ผ๊ณ ๋ณด๋ฉด
๊ตฌํ๊ณ ์ ํ๋ 2์ฐจ์ ๊ตฌ๊ฐํฉ
prefixSum[x2][y2] - prefixSum[x2][y1-1] - prefixSum[x1-1][y2] + prefixSum[x1-1][y1-1]
-
๋ฐฑ์ค 10986 ๋๋จธ์งํฉ https://www.acmicpc.net/problem/10986
-
๋ฐฑ์ค 11660 ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ5 https://www.acmicpc.net/problem/11660