今日のTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
コンピュータシステムでは、ユーザごとに異なる資源に対するアクセス権限を持っている。rights[]という各ユーザの権限を表す数値、資源を利用するために最低限必要となる権限を表す数値minPermissionが与えられる。rights[]の各要素に対し、アクセス可能であればA、不可能であればDと変換して文字列を返すメソッドを作成せよ。ユーザが0であれば返すのは""になる。
例えばrights[]={0,1,2,3,4,5}、minPermissionが2であれば、返す値は"DDAAAA"になる。権限が0,1のユーザがD(Deny)されるが、2以上のユーザはA(allow)になる。
私の解答は以下の通り。
public class AccessLevel {
public String canAccess(int[] rights, int minPermission) {
if( rights.length == 0 ) return "";
StringBuffer sb = new StringBuffer();
for( int i=0 ; i<rights.length ; i++ ){
if( rights[i] >= minPermission ){
sb.append("A");
}else{
sb.append("D");
}
}
return sb.toString();
}
}
得点は247.76/250、中央値は約245点。順番に判定するだけなので、特に難しいところはないと思います。

0 件のコメント:
コメントを投稿