2012年7月4日水曜日

TopCoder SRM403 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文について説明する。

ジョンは4と7はラッキーな桁であり、その他の桁はラッキーでないと考えている。ラッキーナンバーは10進数記法で書いたときにラッキーな桁のみからなる数値のことである。nという整数が与えられたとき、n以下で最大のラッキーナンバーを返すメソッドを作成せよ。なお、nは4以上の整数である。

私の解答はこちら。

public class TheLargestLuckyNumber {

 public int find(int n) {
  while( n > 0 ){
   String tmp = "" + n;
   boolean isLucky = true;
   for( int i=0 ; i<tmp.length() ; i++ ){
    if( tmp.charAt(i) != '4' && tmp.charAt(i) != '7' ){
     isLucky = false;
     break;
    }
   }
   if( isLucky ) return n;
   n--;
  }
  return 0;
 }

}

得点は247.97/250、1回のsubmitでシステムテストクリア。4と7以外を含むという判定を繰り返し数を10で割って余りで判別するといった手法もありそうですね。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計