School/Algorithm

[알고리즘]Bucket

0lynny 2022. 2. 8. 20:44
import java.util.HashMap;
import java.util.Scanner;

public class Student20191023 {

   static int minerror = 0;
   static int check = 0;
   
   public static void main(String[] args) {
         
        Scanner scan = new Scanner(System.in);

        String in = scan.nextLine();
        String [] inputarr = in.split(" ");

        int i, j;
        int input = Integer.parseInt(inputarr[0]);
        int bucket = Integer.parseInt(inputarr[1]); 
         
        int[] numbers = new int[input];
         
        for(i = 2, j = 0; i < inputarr.length; i++, j++) {
           numbers[j] = Integer.parseInt(inputarr[i]);
        }

        int[] items = new int[input - 1];
        for(i = 0; i < input - 1; i++){
           items[i] = i + 1;
        }    
         
        insertionSort(numbers, numbers.length);
        
        int[] bucketarr = new int[bucket - 1];
        solution(numbers, items, bucketarr, bucket - 1);
        System.out.println(minerror);

        scan.close();
      }
   
   public static void insertionSort(int[] A, int n) {
      int i;
      for(i = 1; i < n; i++) {
         int j = 0;
         int m, k;
         for(j = 0; j < i; j++) 
            if(A[j] > A[i])
               break;
         m = (int) A[i];
         
         for(k = i; k > j; k--) 
            A[k] = A[k-1];
               
         A[j] = m;
      }
   }

   public static void solution(int[] arr, int[] items, int[] bucket, int k){
      if(k == 0){  
         int ret = divide(bucket, arr);
         if(check == 0){
            check++;
            minerror = ret;
         }
         else if(check != 0){
            if(minerror > ret){
               minerror = ret;
            }
         }
         return;
      }
      
      int lastIndex = bucket.length - k - 1;
      
      for(int i = 0; i < items.length; i++){
         if(bucket.length == k){ 
            bucket[0] = items[i];
            solution(arr, items, bucket, k-1);
         }
         else if(bucket[lastIndex] < items[i]){ 
            bucket[lastIndex + 1] = items[i];
            solution(arr, items, bucket, k - 1);
         }
      }
   }