백준 11058 - 크리보드 [Gold/5] - Golang
접근 방식
DP로 접근할 수 있다. 힌트에도 주어져 있지만, 큰 문제를 작은 문제로 잘게 나누어 풀 수 있기 때문이다.
순서
TBD
코드
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
var (
w = bufio.NewWriter(os.Stdout)
sc = bufio.NewScanner(os.Stdin)
)
var (
D [101]int
N int
)
func init() {
sc.Split(bufio.ScanWords)
}
func main() {
defer w.Flush()
N = scanInt()
D[1], D[2], D[3] = 1, 2, 3
for i := 4; i <= N; i++ {
temp := 0
for j := 1; j <= i-2; j++ {
temp = max(temp, (j+1)*D[i-(j+2)])
}
D[i] = max(D[i-1]+1, temp)
}
fmt.Fprintln(w, D[N])
}
func scanInt() int {
sc.Scan()
n, _ := strconv.Atoi(sc.Text())
return n
}
func max(arr ...int) int {
res := arr[0]
for i := range arr {
if res < arr[i] {
res = arr[i]
}
}
return res
}
반응형
'PS > BOJ' 카테고리의 다른 글
[BOJ/2565/Golang] 백준 2565 - 전깃줄 (0) | 2021.05.20 |
---|---|
[BOJ/5557/Golang] 백준 5557 - 1학년 (0) | 2021.05.19 |
[BOJ/9252/Golang] 백준 9252 - LCS 2 (0) | 2021.05.18 |
[BOJ/9251/Golang] 백준 9251 - LCS (0) | 2021.05.17 |
[BOJ/1062/Golang] 백준 1062 - 가르침 (0) | 2021.05.01 |