๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [๊ตฌํ˜„] 2167๋ฒˆ_2์ฐจ์› ๋ฐฐ์—ด์˜ ํ•ฉ

Dbswnstjd 2022. 11. 6. 01:02

๋ฌธ์ œ

https://www.acmicpc.net/problem/2167

 

2167๋ฒˆ: 2์ฐจ์› ๋ฐฐ์—ด์˜ ํ•ฉ

์ฒซ์งธ ์ค„์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ N, M(1 ≤ N, M ≤ 300)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ •์ˆ˜๋กœ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š”

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 2167๋ฒˆ ๋ฌธ์ œ - 2์ฐจ์› ๋ฐฐ์—ด์˜ ํ•ฉ
n, m = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(n)]

k = int(input())
dp = [[0] * (m+1) for _ in range(n+1)]

for i in range(1, n+1):
    for j in range(1, m+1):
        dp[i][j] = arr[i-1][j-1] + dp[i][j-1] + dp[i-1][j]  - dp[i-1][j-1]

for _ in range(k):
    i,j,x,y = map(int, input().split())
    print(dp[x][y] - dp[x][j-1] - dp[i-1][y] + dp[i-1][j-1])

์ฒ˜์Œ์— ํ’€์—ˆ์„ ๋•Œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ์„œ DP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.