dev/algorithm
BOJ / 11048번 / 이동하기 [Go][Python3]
crscnt
2021. 3. 26. 21:00
👩🏻💻 문제
11048번: 이동하기
준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는
www.acmicpc.net
✍🏻 풀이
🎨 Go
// https://www.acmicpc.net/problem/11048
package main
import (
"bufio"
"fmt"
"math"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, m int
fmt.Fscanln(reader, &n, &m)
var candy = make([][]int, n+1)
for i := 1; i < n+1; i++ {
candy[i] = make([]int, m+1)
for j := 1; j < m+1; j++ {
fmt.Fscanf(reader, "%d ", &candy[i][j])
}
}
var dp = make([][]int, n+1)
for i := 0; i < n+1; i++ {
dp[i] = make([]int, m+1)
}
for i := 1; i < n+1; i++ {
for j := 1; j < m+1; j++ {
dp[i][j] = int(math.Max(float64(dp[i-1][j]), float64(dp[i][j-1]))) + candy[i][j]
}
}
fmt.Fprintln(writer, dp[n][m])
}
🎨 Python3
# https://www.acmicpc.net/problem/11048
import sys
if __name__ == "__main__":
n, m = list(map(int, sys.stdin.readline().split()))
candy = []
for i in range(n):
candy.append(list(map(int, sys.stdin.readline().split())))
dp = [[0 for _ 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] = max(dp[i-1][j], dp[i][j-1]) + candy[i-1][j-1]
print(dp[n][m])
728x90