1. ๋์ ํฉ ์๊ณ ๋ฆฌ์ฆ ์ ์
๋์ ํฉ ํน์ ๋ถ๋ถ ํฉ ์๊ณ ๋ฆฌ์ฆ์ ๋ง ๊ทธ๋๋ก ๊ตฌํ๊ณ ์ ํ๋ ๊ตฌ๊ฐ์ ๋์ ๋ ํฉ์ ๊ตฌํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์ i ~ j ๊น์ง์ ํฉ์ ๊ตฌํ๊ณ ์ ํ ๋ ํ๋์ฉ ๋ํด๊ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ต์ ์ ๊ฒฝ์ฐ O(n^2) ์๊ฐ๋ณต์ก๋๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ํน์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๊ธฐ ์ํด์๋ ๋์ ๋ ํฉ์ ๊ตฌํด ํ์ํ ๋ถ๋ถ๋ง ์ฌ์ฉํ๊ณ , O(N), O(1) ์๊ฐ๊น์ง ๋จ์ถ์ํฌ ์ ์๋ค.
2. 1์ฐจ์ ๋ฐฐ์ด
| ์ธ๋ฑ์ค | 0 | 1 | 2 | 3 | 4 |
| ๋ฐฐ์ด | 10 | 20 | 30 | 40 | 50 |
| ๋์ ํฉ | 10 | 30 | 60 | 100 | 150 |
์ ๋ฐฐ์ด์์ ์ธ๋ฑ์ค 2๋ฒ~4๋ฒ ๊ตฌ๊ฐ์ ํฉ์ ๊ตฌํ๋ค๊ณ ํด๋ณด์. 4๋ฒ ์ธ๋ฑ์ค์ ๋์ ํฉ์ 150(0๋ฒ์งธ~4๋ฒ์งธ ํฉ)์ด๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ธ๋ฑ์ค 2๋ฒ๋ถํฐ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์์๋ ๊ตฌ๊ฐ์ธ 0 ~ 1๋ฒ์งธ๋ ๋นผ์ค์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด 0๋ฒ๊ณผ 1๋ฒ ์ธ๋ฑ์ค์ ๊ฐ์ ๋นผ์ค์ผ ํ๋? ์๋๋ค. 1๋ฒ ๋ํ 0๋ฒ์งธ์ ๊ฐ์ด ๋์ ์ด ๋ผ์ ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์ 1๋ฒ ์ธ๋ฑ์ค๋ง ๋นผ์ฃผ๋ฉด ๋๋ค. ๋ฐ๋ผ์ 4๋ฒ ์ธ๋ฑ์ค์์ 1๋ฒ ์ธ๋ฑ์ค๋ฅผ ๋นผ์ฃผ๋ฉด ๋๋ค.
๋ฐฐ์ด iํญ๋ถํฐ jํญ๊น์ง์ ํฉ์ S(i, j)๋ผ๊ณ ํ๋ฉด, S(i, j) = prefix_sum[j] - prefix_sum[i - 1]
S[j] - S[i-1] = a[i] + a[i+1] + ... + a[j-1] + a[j]
ํ์ด์ฌ ์ฝ๋
array = [10, 20, 30, 40, 50]
n = len(array)
prefix_sum = [0] * (n + 1)
for i in range(n):
prefix_sum[i + 1] = prefix_sum[i] + array[i]
#๊ฒฐ๊ณผ : prefix_sum[0, 10, 30, 60, 100, 150]
3. 2์ฐจ์ ๋ฐฐ์ด


prefix_sum[i][j] = arr[i-1][j-1] + prefix_sum[i-1][j] + prefix_sum[i][j-1] - prefix_sum[i-1][j-1]
ํ์ด์ฌ ์ฝ๋
arr = [[10, 20, 30],
[20, 30, 40],
[30, 40, 50]]
m = 3 #์ด
n = 3 #ํ
prefix_sum = [[0 for _ in range(m+1)] for _ in range(n+1)]
for i in range(1, n+1):
for j in range(1, m+1):
prefix_sum[i][j] = arr[i - 1][j - 1] + prefix_sum[i - 1][j]
+ prefix_sum[i][j - 1] - prefix_sum[i - 1][j - 1]
for i in range(n+1):
print(prefix_sum[i])
#๊ฒฐ๊ณผ
[0, 0, 0, 0]
[0, 10, 30, 60]
[0, 30, 80, 150]
[0, 60, 150, 270]
2์ฐจ์ ๋ฐฐ์ด ์ฐธ๊ณ - https://yiyj1030.tistory.com/489
[์๊ณ ๋ฆฌ์ฆ] ๋ถ๋ถํฉ, ๋์ ํฉ (Prefix Sum) ์ฝ๊ฒ ์์๋ณด๊ธฐ(ํ์ด์ฌ)
๋ถ๋ถํฉ, ๋์ ํฉ์ด๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ๋ฐฐ์ด์ ์ผ๋ถ ๊ตฌ๊ฐ์ ๋ํ ํฉ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๊ตฌํ ์ ์๊ฒ ํด์ฃผ๋ ์คํฌ์ด๋ค. N๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋ ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ์ ๊ตฌํ๋ ค
yiyj1030.tistory.com
2์ฐจ์ ๋ฐฐ์ด ์ฐธ๊ณ - https://velog.io/@ohdowon064/Algorithm-2%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4-%EB%B6%80%EB%B6%84%ED%95%A9-%EB%88%84%EC%A0%81%ED%95%A9-%EA%B5%AC%ED%95%98%EA%B8%B0
4. ๋ฐฑ์ค ๋์ ํฉ ๋ฌธ์
1์ฐจ์
2851๋ฒ: ์ํผ ๋ง๋ฆฌ์ค
์ฒซ์งธ ์ค์ ๋ง๋ฆฌ์ค๊ฐ ๋ฐ๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ 100์ ๊ฐ๊น์ด ์๊ฐ 2๊ฐ๋ผ๋ฉด (์: 98, 102) ๋ง๋ฆฌ์ค๋ ํฐ ๊ฐ์ ์ ํํ๋ค.
www.acmicpc.net
2851๋ฒ ํ์ด : https://dev-cloud.tistory.com/136
11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์ ์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํฉ์ ๊ตฌํด์ผ ํ๋ ๊ตฌ๊ฐ i์ j
www.acmicpc.net
11659๋ฒ ํ์ด : https://dev-cloud.tistory.com/137
2์ฐจ์
2167๋ฒ: 2์ฐจ์ ๋ฐฐ์ด์ ํฉ
์ฒซ์งธ ์ค์ ๋ฐฐ์ด์ ํฌ๊ธฐ N, M(1 ≤ N, M ≤ 300)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ M๊ฐ์ ์ ์๋ก ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ค. ๋ฐฐ์ด์ ํฌํจ๋์ด ์๋ ์๋ ์ ๋๊ฐ์ด 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค. ๊ทธ ๋ค์ ์ค์๋
www.acmicpc.net
11660๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5
์ฒซ์งธ ์ค์ ํ์ ํฌ๊ธฐ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ์ ์ฑ์์ ธ ์๋ ์๊ฐ 1ํ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๋ค
www.acmicpc.net
11660๋ฒ ํ์ด : https://dev-cloud.tistory.com/142
'๐งฉ Algorithm > ๊ฐ๋ ๋ฐ ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์๊ณ ๋ฆฌ์ฆ] DP (Dynamic Programming, ๋์ ๊ณํ๋ฒ) (0) | 2023.09.25 |
|---|---|
| [์๊ณ ๋ฆฌ์ฆ] ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (1) | 2023.09.23 |
| [์๊ณ ๋ฆฌ์ฆ] BFS/DFS ์๊ณ ๋ฆฌ์ฆ (๊ทธ๋ํ ํ์) (0) | 2023.05.15 |
| Greedy (๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ) (0) | 2023.05.07 |
| Brute Force (์์ ํ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2022.08.05 |