IT recording...
[BOJ] 11660 구간 합 구하기 5 - python 본문
풀이
|
import sys
def input():
return sys.stdin.readline().rstrip()
N, M = map(int,input().split(" "))
maps = [list(map(int,input().split(" "))) for _ in range(N)]
toCal = [list(map(int,input().split(" "))) for _ in range(M)]
# (0,0)부터 (N,N)까지의 합을 구해놓기
dp = [[0 for _ in range(N)] for _ in range(N)]
dp[0][0] = maps[0][0]
for r in range(N):
for c in range(N):
if c == 0:
dp[r][c] = dp[r-1][N-1] + maps[r][c]
else:
dp[r][c] = dp[r][c-1] + maps[r][c]
def calculate(cal):
a,b,c,d = cal
a -= 1 #00시작으로 맞추기
b -= 1
c -= 1
d -= 1
if a==c and b==d:
return maps[a][b]
sum = 0
for row in range(a,c+1):
if b == 0:
sum += dp[row][d]
if row != 0:
sum -= dp[row-1][N-1]
else:
sum += dp[row][d] - dp[row][b-1]
return sum
for cal in toCal:
print(calculate(cal))
얻어가는 것
느낀점
"211113"
소요 시간 : 1h
'Algorithm' 카테고리의 다른 글
[BOJ] 2805 나무 자르기 - python (0) | 2021.12.02 |
---|---|
[BOJ] 1062 가르침 - python (0) | 2021.12.02 |
[BOJ] 1339 단어 수학 - python (0) | 2021.12.02 |
[BOJ] 11659 구간 합 구하기 4 - python (0) | 2021.12.02 |
[BOJ] 2580 스도쿠 - python (0) | 2021.12.02 |
Comments