Topcoder SRM 480 "InternetSecurity"
問題:http://www.topcoder.com/stat?c=problem_statement&pm=11064 (要ログイン)
とりあえず貼っとく.
本番ではdangerousが更新されてから再度keywordの検査をしなかったアウト.
import java.util.*; public class InternetSecurity { public String[] determineWebsite(String[] address, String[] keyword, String[] dangerous, int threshold) { int n = address.length; Set<String> dangerSet = new HashSet<String>(Arrays.asList(dangerous)); List<String> resultList = new ArrayList<String>(); for (boolean b=true;b;) { b = false; for (int i = 0; i < n; ++i) { // 50 int dc = 0; if (!resultList.contains(address[i])) { for (String key : keyword[i].split(" ")) { if (dangerSet.contains(key)&&++dc >= threshold) { b = true; resultList.add(address[i]); dangerSet.addAll(Arrays.asList(keyword[i].split(" "))); break; } } } } } String[] result=new String[resultList.size()]; for(int i=0,p=0;i<n;++i){ if(resultList.contains(address[i])){ result[p++]=address[i]; } } return result; } }