11660๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5
์ฒซ์งธ ์ค์ ํ์ ํฌ๊ธฐ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ์ ์ฑ์์ ธ ์๋ ์๊ฐ 1ํ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๋ค
www.acmicpc.net
๋ฌธ์
N×N๊ฐ์ ์๊ฐ N×N ํฌ๊ธฐ์ ํ์ ์ฑ์์ ธ ์๋ค. (x1, y1)๋ถํฐ (x2, y2)๊น์ง ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. (x, y)๋ xํ y์ด์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, N = 4์ด๊ณ , ํ๊ฐ ์๋์ ๊ฐ์ด ์ฑ์์ ธ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
| 1 | 2 | 3 | 4 |
| 2 | 3 | 4 | 5 |
| 3 | 4 | 5 | 6 |
| 4 | 5 | 6 | 7 |
์ฌ๊ธฐ์ (2, 2)๋ถํฐ (3, 4)๊น์ง ํฉ์ ๊ตฌํ๋ฉด 3+4+5+4+5+6 = 27์ด๊ณ , (4, 4)๋ถํฐ (4, 4)๊น์ง ํฉ์ ๊ตฌํ๋ฉด 7์ด๋ค.
ํ์ ์ฑ์์ ธ ์๋ ์์ ํฉ์ ๊ตฌํ๋ ์ฐ์ฐ์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ์ ํฌ๊ธฐ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ์ ์ฑ์์ ธ ์๋ ์๊ฐ 1ํ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๋ค ๊ฐ์ ์ ์ x1, y1, x2, y2 ๊ฐ ์ฃผ์ด์ง๋ฉฐ, (x1, y1)๋ถํฐ (x2, y2)์ ํฉ์ ๊ตฌํด ์ถ๋ ฅํด์ผ ํ๋ค. ํ์ ์ฑ์์ ธ ์๋ ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. (x1 ≤ x2, y1 ≤ y2)
์ถ๋ ฅ
์ด M์ค์ ๊ฑธ์ณ (x1, y1)๋ถํฐ (x2, y2)๊น์ง ํฉ์ ๊ตฌํด ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
4 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
2 2 3 4
3 4 3 4
1 1 4 4
์์ ์ถ๋ ฅ
27
6
64
ํ์ด
- ๋์ ํฉ ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ


์๋ฅผ ๋ค์ด, prefix_sum์์ ๊ตฌ๊ฐ (2, 2) ๋ถํฐ (3, 4) ๊น์ง์ ํฉ์ ๊ตฌํ๋ค๊ณ ํด๋ณด์.
(์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์์,) ๋์ ํฉ์์ prefix_sum[3][4] (๊ฐ : 42)์์ prefix_sum[1][4] (๊ฐ : 10)๊ณผ prefix_sum[3][1] (๊ฐ : 6)์ ๋นผ๊ณ ๋ง์ง๋ง์ผ๋ก prefix_sum[1][1] (๊ฐ : 1)์ ๋ํด์ฃผ๋ฉด ๋๋ค.
โป ๋์ ํฉ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช - https://dev-cloud.tistory.com/141
Solution
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
prefix_sum = [[0 for _ in range(N+1)] for _ in range(N+1)]
#๋์ ํฉ
for i in range(1, N+1):
for j in range(1, N+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]
#(x1, y1) ~ (x2, y2) ํฉ ๊ตฌํ๊ธฐ
for _ in range(M):
x1, y1, x2, y2 = map(int, input().split())
print(prefix_sum[x2][y2] - prefix_sum[x1-1][y2] - prefix_sum[x2][y1-1] +
prefix_sum[x1-1][y1-1])'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 2217๋ฒ : ๋กํ (Python/Silver 4) (0) | 2023.04.03 |
|---|---|
| BOJ 1654๋ฒ : ๋์ ์๋ฅด๊ธฐ (Python/Silver 2) (0) | 2023.04.03 |
| BOJ 1181๋ฒ : ๋จ์ด ์ ๋ ฌ (Python/Silver 5) (0) | 2023.03.24 |
| BOJ 11441๋ฒ : ํฉ ๊ตฌํ๊ธฐ (Python/Silver 3) (0) | 2023.03.22 |
| BOJ 11659๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (Python/Silver 3) (0) | 2023.03.22 |