結果
| 問題 | 
                            No.5 数字のブロック
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 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 | 
ソースコード
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;
	}
}