package main import "fmt" func main() { var n int _, _ = fmt.Scan(&n) // n以下のコインを洗い出す coins := make([]int, 0) for i := 1; i < n; i++ { c := i * (i + 1) / 2 if c <= n { coins = append(coins, c) } else { break } } // fmt.Println(coins) // 幅優先探索してみる pattern := []int{0} ans := 0 for ans < 10 { ans++ tmp := make([]int, 0) for _, p := range pattern { for _, c := range coins { if p+c == n { fmt.Println(ans) return } else if p+c < n { tmp = append(tmp, p+c) } } } pattern = tmp // fmt.Println(ans, pattern) } }