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