[๋ฐฑ์ค/python] 11660๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5
๋ฌธ์
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)๊น์ง ํฉ์ ๊ตฌํด ์ถ๋ ฅํ๋ค.
์ ๋ต
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
# board์ ๊ฐ๋ก ์ธ๋ก ์ฒซ ์ค์ 0์ผ๋ก ์ด๊ธฐํ. board์ ๊ธธ์ด๋ N+1์ด ๋๊ณ ๊ฐ์ (1,1)๋ถํฐ ์๋ค.
board = [[0 for _ in range(N+1)]]
for _ in range(N):
board.append([0])
board[-1].extend(list(map(int, input().split())))
for i in range(1, N+1):
for j in range(1, N+1):
board[i][j] += board[i-1][j] + board[i][j-1] - board[i-1][j-1]
for _ in range(M):
x1, y1, x2, y2 = map(int, input().split())
print(board[x2][y2] - board[x1-1][y2] - board[x2][y1-1] + board[x1-1][y1-1])
์ธ๋ฑ์ค ํธ์๋ฅผ ์ํด board์ ๊ฐ๋ก ์ฒซ์ค๊ณผ ์ธ๋ก ์ฒซ์ค์ 0์ผ๋ก ์ด๊ธฐํํด์ฃผ์๋ค.
์ ๋ ฅ๋ฐ๋ ๊ฐ์ board์ (1,1)๋ถํฐ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
๋ชจ๋ ์ ๋ ฅ์ ๋ฐ์ ํ board์ ๊ฐ์ (0, 0)์์ ํด๋น ์ธ๋ฑ์ค๊น์ง์ ์ซ์ ํฉ์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
์ฒซ์ค์ 0์ผ๋ก ์ด๊ธฐํํด์ฃผ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋ฅผ 1๋ถํฐ N+1๊น์ง๋ก ํด์ฃผ์ด์ผ ํ๋ค.
(i, j)์ ๊ฐ์ (i-1, j)์ ๊ฐ + (i, j-1)์ ๊ฐ์์ ์ค๋ณต๋๋ (i-1, j-1)์ ๊ฐ์ ๋บ ๊ฐ์ด๋ค.
M๊ฐ์ ๊ฒฝ์ฐ์ ๋ํด ๊ณ์ฐํ๋ค.
board์ ๊ฐ์ ๋ฐ๊ฟ์ค ๋์ ์ ์ฌํ ๋ ผ๋ฆฌ๋ก
(x1, y1)์์ (x2, y2) ๋ฒ์์ ๊ฐ์ ๊ณ์ฐํ๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 14503๋ฒ : ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2021.10.06 |
---|---|
[๋ฐฑ์ค/python] 19238๋ฒ : ์คํํธ ํ์ (0) | 2021.09.22 |
[๋ฐฑ์ค/python] 17779๋ฒ : ๊ฒ๋ฆฌ๋งจ๋๋ง 2 (0) | 2021.09.18 |
[๋ฐฑ์ค/python] 7490๋ฒ : 0 ๋ง๋ค๊ธฐ (0) | 2021.09.17 |
[๋ฐฑ์ค/python] 1987๋ฒ : ์ํ๋ฒณ (0) | 2021.09.16 |