結果

問題 No.5 数字のブロック
ユーザー taku-tech
提出日時 2024-09-25 16:02:26
言語 Java
(openjdk 23)
結果
AC  
実行時間 296 ms / 5,000 ms
コード長 1,481 bytes
コンパイル時間 5,750 ms
コンパイル使用メモリ 75,412 KB
実行使用メモリ 58,808 KB
最終ジャッジ日時 2024-09-25 16:02:41
合計ジャッジ時間 11,152 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 34
権限があれば一括ダウンロードができます

ソースコード

diff #

package block_of_Number;

import java.util.Arrays;
import java.util.Scanner;

public class BlockOfNumber02 {

	public static void main(String[] args) {

		//入力
		Scanner sc = new Scanner(System.in);
		int boxWidth = sc.nextInt();	//入れ物となる箱の幅
		int blockNum = sc.nextInt();	//ブロックの数
		int[] arrayBlocksWidth = new int[blockNum];		//各ブロックの幅を格納した配列

		for(int i = 0; i < blockNum; i++) {
			arrayBlocksWidth[i] = sc.nextInt();
		}

		//処理、出力
		System.out.println(countBlock(boxWidth, arrayBlocksWidth));

		sc.close();
	}

	/**
	 * 箱に何個のブロックを入れることができたのかカウントアップ
	 * @param boxWidth - 箱の幅
	 * @param arrayBlocksWidth - それぞれのブロックの幅の数値が入った配列
	 * @return - 箱に入るブロックの最大個数
	 */
	private static int countBlock(int boxWidth, int[] arrayBlocksWidth) {
		int blockCnt = 0;		//何個ブロックが入ったかカウント
		int[] sortedBlock = arrayBlocksWidth.clone();
		Arrays.sort(sortedBlock);	//幅の小さいブロックから順に並び替え
		int space = boxWidth;		//箱の空きスペース
		//小さいブロックから分に箱に詰めていく
		for(int i = 0; i < sortedBlock.length; i++) {
			//スペースがあればカウントアップ
			if(space >= sortedBlock[i]) {
				space -= sortedBlock[i];
				blockCnt++;
			} else {
				break;
			}
		}
		return blockCnt;
	}
}
0