일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바
- 그리디
- AWS
- MySQL
- 백준 17451번
- SQL
- 백준 2512번
- HUFS 모각코 캠프
- 다이나믹 프로그래밍
- SWEA 15612번
- 백준 3085번
- 모각코
- 백준 16918번
- 백준 1331번
- 다이나믹프로그래밍
- 백준 1253번
- 알고리즘
- java_programming
- javascript
- 명품자바
- ubuntu
- 백준 1987
- 깃헙
- 백준
- 백준 15787번
- Python
- react
- 머신러닝과 딥러닝
- 백준 18310번
- 그래프
Archives
- Today
- Total
차곡차곡
[BOJ/Python] 백준 11048번 - 이동하기 본문
백준 #11048 이동하기
import sys
input = sys.stdin.readline
def in_range(r, c):
return 0 <= r < n and 0 <= c < m
n, m = map(int, input().split())
maze = [list(map(int, input().split())) for _ in range(n)]
dp = [[0 for _ in range(m)] for _ in range(n)]
for i in range(n):
for j in range(m):
if i == 0 and j == 0:
dp[i][j] = maze[i][j]
else:
if in_range(i-1, j):
dp[i][j] = max(dp[i-1][j] + maze[i][j], dp[i][j])
if in_range(i, j-1):
dp[i][j] = max(dp[i][j-1] + maze[i][j], dp[i][j])
if in_range(i-1, j-1):
dp[i][j] = max(dp[i-1][j-1] + maze[i][j], dp[i][j])
print(dp[n-1][m-1])
BFS로 풀었다가 시간 초과, 메모리 초과가 나서 DP로 다시 풀었다. (0, 0)부터 시작해서 (n, m)까지 모든 공간을 방문하면서 해당 공간에 도착했을 때 최대 캔디 수를 DP 리스트에 저장한다. 초깃값은 시작 위치인 (0, 0)의 캔디수가 된다. 최대 캔디 수는 미로의 크기를 벗어나지 않는 한에서 (i-1, j) 또는 (i, j-1) 또는 (i-1, j-1)에서 (i, j)로 이동했을 때 얻을 수 있는 캔디의 수 중 가장 큰 값이 저장된다.
BFS로 푼 코드도 첨부한다.
from collections import deque
import sys
input = sys.stdin.readline
def in_range(r, c):
return 0 <= r < n and 0 <= c < m
def bfs():
q = deque()
q.append((0, 0))
while q:
i, j = q.popleft()
for r, c in (i+1, j), (i, j+1), (i+1, j+1):
if in_range(r, c) and visited[r][c] == 0:
visited[r][c] = visited[i][j] + maze[r][c]
q.append((r, c))
elif in_range(r, c) and visited[r][c] != 0:
visited[r][c] = max(visited[r][c], visited[i][j] + maze[r][c])
n, m = map(int, input().split())
maze = [list(map(int, input().split())) for _ in range(n)]
visited = [[0 for _ in range(m)] for _ in range(n)]
visited[0][0] = maze[0][0]
bfs()
print(visited[n-1][m-1])
'CS > Algorithm' 카테고리의 다른 글
[BOJ/Python] 백준 3048번 - 개미 (0) | 2022.08.11 |
---|---|
[BOJ/Python] 백준 13458번 - 시험 감독 (0) | 2022.08.11 |
[BOJ/Python] 백준 2210번 - 숫자판 점프 (0) | 2022.08.06 |
[BOJ/Python] 백준 14620번 - 꽃길 (0) | 2022.08.03 |
[BOJ/Python] 백준 17451번 - 평행 우주 (0) | 2022.08.03 |
Comments