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); } }
카테고리 없음2011. 10. 4. 17:38