2011年8月13日土曜日

TopCoder SRM218 Div2 250Pts

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

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計