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

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] 11660๋ฒˆ_๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 5

Dbswnstjd 2023. 3. 25. 22:48

๋ฌธ์ œ

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

ํ’€์ด

# ๋ฐฑ์ค€ 11660๋ฒˆ ๋ฌธ์ œ - ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 5
n, m = map(int, input().split())

graph = []
graph = [list(map(int, input().split())) for _ in range(n)]

dp = [[0] * (n+1) for _ in range(n+1)]
for i in range(1, n+1):
    for j in range(1, n+1):
        dp[i][j] = dp[i-1][j]+ dp[i][j-1] - dp[i-1][j-1] + graph[i-1][j-1]

for i in range(m):
    x1, y1, x2, y2 = map(int, input().split())
    result = dp[x2][y2] - dp[x2][y1-1] - dp[x1-1][y2] + dp[x1-1][y1-1]
    print(result)

์ฒ˜์Œ์— ์ดํ•ด๋ฅผ ํ•˜๋Š”๋ฐ ์• ๋ฅผ ๋จน์–ด์„œ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค. 

๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ํ’€์ด๋Š” ์˜์—ญ์„ ๋‚˜๋ˆ„์–ด์„œ x1, x2, y1, y2 ์ขŒํ‘œ๋ฅผ ๋ณด๊ณ  ๊ณตํ†ต๋˜๋Š” ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๋”ํ•ด์ฃผ๋Š” ํ’€์ด์—ˆ๋‹ค. 

DP ๋ฌธ์ œ๋Š” ๋งŽ์ด ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค. 

** sys ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค.