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; } }