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