public class test_2 { public static Map PutData(String _id, int _level, String _requisite) throws Exception { Map<String, Object> items = new HashMap<String, Object>(); items.put("id", _id); items.put("level", _level); items.put("requisite", _requisite); return items; } public static List<Map> Input(List<Map> data) throws Exception { data.add(PutData("10001", 1, "0")); data.add(PutData("10002", 1, "10001")); data.add(PutData("10003", 2, "10002")); data.add(PutData("10004", 3, "0")); data.add(PutData("10005", 3, "10003")); data.add(PutData("10006", 4, "10005")); return data; } public static void main(String[] args) throws Exception { List<Map> data = new ArrayList<Map>(); List<String> quest = new ArrayList<String>(); Input(data); // 입력은 구현하지 않았습니다. String input ="3, 10001:y, 10002:y, 10003:y"; String[] list = input.replace(" ","").split(","); // 공백 제거 int level = Integer.parseInt(list[0]); // 레벨 저장 for(int i =1, size = list.length; i < size; i++) // 수행중이거나 완료한 퀘스트를 quest List에 저장 quest.add(list[i]); List<String> output = new ArrayList<String>(); // 출력 Map temp_data; // 임시데이터 for(int i = 0, size = data.size() -1; i <= size; i++) { temp_data = data.get(i); // 임시값 입력 if((Integer)temp_data.get("level") <= level) // 본인 레벨보다 높은 레벨의 퀘스트를 받을 수 없음 { // 수행중이거나 완료한 퀘스트 ID값을 검색 if(!quest.contains(temp_data.get("id")+":y") && !quest.contains(temp_data.get("id")+":n")) { // 선행퀘스트가 없거나 완료된경우 true if("0".equals(temp_data.get("requisite")) || quest.contains(temp_data.get("requisite")+":y")) { output.add((String)temp_data.get("id")); } } } } System.out.print(output.get(0)); for(int i =1, size = output.size(); i < size; i++) { System.out.print(", " + output.get(i)); } } }
카테고리 없음2011. 10. 4. 17:38