Javaの練習も兼ねてTopCoderでプログラミング。以下に書いたコードを紹介するがLevelUpという整数型を返すクラスを実装する。問題を日本語に訳すと以下のような問題である。
よくあるRPGではモンスターを倒して経験値を稼ぐことでレベルが上がるが,これについての実装を行う。expNeededが次のレベルに必要な経験値、receivedが現在の経験値を表している。このとき、次のレベルになるのに必要な経験値を返せ。
例えばexpNeededに[100,300,600](単調増加と仮定してよい)という配列の値が入っていて、receivedに320と入っていたら、600-320=280を返せということになる。receivedが300なら600-300=300になる。
実装したコードは以下の通り。
public class LevelUp{
public static int toNextLevel(int[] expNeeded, int received){
int i;
int idx=0;
for( i=0 ; i< expNeeded.length ; i++ ){
if(received < expNeeded[i] ){
return expNeeded[i]-received;
}
}
return 0;
}
}点数は184.09/250といまいち。簡潔な解法を思いつくのに時間がかかってしまった。

0 件のコメント:
コメントを投稿