홍우진의 개발 일기장
[백준] 2167번: 2차원 배열의 합 / 파이썬 본문
728x90
반응형
문제 링크
https://www.acmicpc.net/problem/2167
풀이 코드
import sys
input = sys.stdin.readline
n, m = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(n)]
k = int(input())
do = [list(map(int,input().split())) for _ in range(k)]
dp = [[0 for i in range(m+1)] for _ in range(n+1)]
for i in range(1,n+1):
for j in range(1,m+1):
dp[i][j] = dp[i-1][j] + dp[i][j-1] + arr[i-1][j-1] - dp[i-1][j-1]
for _, line in enumerate(do):
i,j,x,y = line
print(dp[x][y]-(dp[x][j-1]+dp[i-1][y])+dp[i-1][j-1])
코드 해석
그냥 이중 for문으로 풀었다가 시간초과가 나서 확인해 보니 DP로 풀어야 될 것 같았다.
계속 해보다 안돼서
백준 2167번 2차원 배열의 합 (Python, DP)
백준 2167번 2차원 배열의 합 문제 바로가기문제2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열
velog.io
이 글을 참고했다.
봐도 헷갈린다 ㅠㅠ
체감 난이도: ★★★★☆
왜 실버 5에 있는지 모르겠는 레전드 킬러 문제...
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1834번: 나머지와 몫이 같은 수 / 파이썬 (0) | 2025.02.26 |
---|---|
[백준] 14425번: 문자열 집합 / 파이썬 (0) | 2025.02.25 |
[백준] 2870번: 수학숙제 / 파이썬 (0) | 2025.02.23 |
[백준] 1076번: 저항/ 파이썬 (0) | 2025.02.21 |
[백준] 2622번: 삼각형만들기 / 파이썬 (0) | 2025.02.20 |
Comments