このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
N日(1~Nという日とする)のうちK日(1<=K<=N)連続した休みがとりたいのだが、workingDaysにある日については会議がある(配列の要素は1以上N以下の整数で与えられる)。このとき会議がある日を最小でいくつずらせば、K日の連続した休みを取ることができるか。
import java.util.Arrays; public class VacationTime { public int bestSchedule(int N, int K, int[] workingDays) { Arrays.sort(workingDays); int mindays = workingDays.length + 1; for( int i=1 ; i<=N-K+1 ; i++ ){ int ndays = 0; for( int j=i ; j<i+K ; j++ ){ for( int k=0 ; k<workingDays.length ; k++ ){ if( workingDays[k] == j ) ndays++; } } if( ndays < mindays ) mindays = ndays; } return mindays; } }
得点は190.81/250、1回のsubmitでシステムテストクリア。本文はもうちょっと前フリがあるのですが、面倒なので省略。
0 件のコメント:
コメントを投稿