문제 링크
생각
- 생각해야 할 값이 2개다. 돌려받는 메모리와 리턴에 대한 오버헤드.
- dp를 사용하는 가방 알고리즘을 떠올렸다.
코드
package main
import (
"bufio"
"fmt"
"os"
)
var memories, returnVal []int
var table [][]int
var returnValMax int
func main() {
r := bufio.NewReader(os.Stdin)
var N, M int
fmt.Fscan(r, &N, &M)
memories = make([]int, N+1)
returnVal = make([]int, N+1)
for i := 1; i <= N; i++ {
fmt.Fscan(r, &memories[i])
}
for i := 1; i <= N; i++ {
fmt.Fscan(r, &returnVal[i])
returnValMax += returnVal[i]
}
table = make([][]int, N+1)
for i := 0; i <= N; i++ {
table[i] = make([]int, returnValMax+1)
}
for y := 1; y <= N; y++ {
for x := 0; x <= returnValMax; x++ {
if x-returnVal[y] < 0 {
table[y][x] = table[y-1][x]
} else {
table[y][x] = getMax(table[y-1][x], table[y-1][x-returnVal[y]]+memories[y])
}
}
}
for i := 0; i <= returnValMax; i++ {
if table[N][i] >= M {
fmt.Print(i)
return
}
}
}
func getMax(a, b int) int {
if a < b {
return b
}
return a
}
결과
'Study > Algorithm' 카테고리의 다른 글
[Algorithm]Programmers_KAKAO_118667_두 큐 합 같게 만들기_Go (0) | 2022.08.26 |
---|---|
[Algorithm] Programmers_42579_베스트앨범 - Go (0) | 2022.06.13 |
[Algorithm] BOJ_18809_Gaaaaaaaaaarden - Go (0) | 2022.04.29 |
[Algorithm] Programmers_42579_베스트 앨범_Go (0) | 2021.10.13 |
[Algorithm]Programmers_월간코드챌린지_86052_빛의 경로 사이클_Go (0) | 2021.10.01 |