結果

問題 No.5 数字のブロック
ユーザー taku-techtaku-tech
提出日時 2024-09-25 16:02:26
言語 Java21
(openjdk 21)
結果
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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 119 ms
54,544 KB
testcase_01 AC 163 ms
53,880 KB
testcase_02 AC 132 ms
53,932 KB
testcase_03 AC 243 ms
57,776 KB
testcase_04 AC 223 ms
57,152 KB
testcase_05 AC 258 ms
58,296 KB
testcase_06 AC 262 ms
57,900 KB
testcase_07 AC 227 ms
57,564 KB
testcase_08 AC 244 ms
58,264 KB
testcase_09 AC 205 ms
56,776 KB
testcase_10 AC 264 ms
57,944 KB
testcase_11 AC 243 ms
57,920 KB
testcase_12 AC 244 ms
58,216 KB
testcase_13 AC 256 ms
58,380 KB
testcase_14 AC 144 ms
54,208 KB
testcase_15 AC 158 ms
54,412 KB
testcase_16 AC 257 ms
58,604 KB
testcase_17 AC 296 ms
58,464 KB
testcase_18 AC 273 ms
58,676 KB
testcase_19 AC 272 ms
58,808 KB
testcase_20 AC 134 ms
53,904 KB
testcase_21 AC 135 ms
53,832 KB
testcase_22 AC 152 ms
54,268 KB
testcase_23 AC 133 ms
54,368 KB
testcase_24 AC 158 ms
54,348 KB
testcase_25 AC 188 ms
54,316 KB
testcase_26 AC 136 ms
54,004 KB
testcase_27 AC 147 ms
53,912 KB
testcase_28 AC 135 ms
54,140 KB
testcase_29 AC 243 ms
57,448 KB
testcase_30 AC 205 ms
56,516 KB
testcase_31 AC 134 ms
54,020 KB
testcase_32 AC 134 ms
54,216 KB
testcase_33 AC 123 ms
52,836 KB
権限があれば一括ダウンロードができます

ソースコード

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