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