結果
| 問題 |
No.5 数字のブロック
|
| ユーザー |
|
| 提出日時 | 2018-02-27 18:24:28 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,169 bytes |
| コンパイル時間 | 15,152 ms |
| コンパイル使用メモリ | 225,512 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-29 14:05:03 |
| 合計ジャッジ時間 | 11,331 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 WA * 7 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
type Int64Slice []int64
func (a Int64Slice) Len() int { return len(a) }
func (a Int64Slice) Less(i, j int) bool { return a[i] < a[j] }
func (a Int64Slice) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func main() {
in := bufio.NewScanner(os.Stdin)
// 箱の幅
in.Scan()
l := in.Text()
// ブロックの数
in.Scan()
n := in.Text()
// 各ブロックの幅
in.Scan()
w := in.Text()
fmt.Println(block(l, n, w))
}
// 箱に入るブロックの数を計算して返す。
func block(width string, num string, blockWidth string) string {
intWidth, _ := strconv.ParseInt(width, 10, 64)
// ブロックを配列に格納
blocks := make(Int64Slice, 0)
for _, v := range strings.Split(blockWidth, " ") {
t, _ := strconv.ParseInt(v, 10, 64)
blocks = append(blocks, t)
}
// 昇順にソート
sort.Sort(blocks)
var total int64 = 0
count := 0
// 左から順に加算していき、箱の幅を超えたら終了
for _, v := range blocks {
if (total + v) < intWidth {
count++
total += v
}else{
break
}
}
return strconv.Itoa(count)
}