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