今日の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 件のコメント:
コメントを投稿