카테고리 없음2011. 10. 4. 17:38

public class test_moonleaf
{
    public static Map PutData(String _id, int _con, int _str, int _int, int _count) throws Exception
    {
        Map<string, object=""> items = new HashMap<string, object="">();
 
        items.put("id", _id);
        items.put("con", _con);
        items.put("str", _str);
        items.put("int", _int);
        items.put("count", _count);
 
        return items;
    }
 
    public static List<map> Input(List<map> data) throws Exception
    {
        data.add(PutData("1001", 20, 3, 15, 2));
        data.add(PutData("1003", 12, 18, 22 ,4));
        data.add(PutData("1007", 9, 22, 20, 5));
        data.add(PutData("1009", 2, 9, 25, 3));
        data.add(PutData("1017", 25, 14, 3, 6));
        data.add(PutData("1019", 7, 20, 12, 4));
        data.add(PutData("1020", 4, 4, 19, 3));
        data.add(PutData("1021", 8, 12, 9, 5));
 
        return data;
    }
 
    public static void main(String[] args) throws Exception
    {
        List<map> data = new ArrayList<map>();
        Input(data);
 
        // 값 입력받는곳 귀찮아서 구현 안함..
        String _stats = "con";
        int _num = 8;
 
        Map _temp; // 임시 저장 객체
 
        for(int i = 0, size = data.size() - 1; i < size; i++)
        {
            for(int j = i + 1, _size = data.size();  j < _size; j++ )
            {
                if((Integer)data.get(i).get(_stats) < (Integer)data.get(j).get(_stats))
                {
                    _temp = data.get(i);
                    data.set(i, data.get(j));
                    data.set(j, _temp);
                }
            }
        }
 
        int tot = 0;
        int [] bt = new int[2];
 
        while(_num > 0)
        {
            for(int  i = 0, size = data.size(); i < size; i++)
            {
                int count = (Integer)data.get(i).get("count");
                int point = (Integer)data.get(i).get(_stats);
                if(_num > count)
                {
                    _num = _num - count;
                    tot += count * point;
                }
                else
                {
                    bt[0] = i;
                    bt[1] = _num;
                    tot += _num * point;
                    _num = -1;
                    break;
                }
            }
        }
         
        for(int i =0; bt[0] >= i ; i++)
        {
            System.out.print(data.get(i).get("id") + ": " + data.get(i).get("count") + ", ");
        }
        System.out.print("sum: " + tot);
    }
}

Posted by 달빛낙엽