このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
0-9と書かれたカードからなるデッキからプレーヤーにカードを配る。カードの順を上から表した文字列をdeckとし、それをnumPlayersに順番に配る。このとき各プレーヤーに対し、配られたカードを順に表す文字列配列を返せ。ただし、カードの枚数は常にプレーヤー数の倍数ちょうどで用意されているとは限らない。倍数にならない時は、最大限配りつつ枚数は全員同じになるようにせよ。
例えばnumPlayers=3、deck="03579"とすると、返す配列は{"0","3","5"}になる。7、9と書かれたカードは配らないことに注意。
私の解答はこちら。
import java.util.Arrays;
public class Cards {
public String[] deal(int numPlayers, String deck) {
int nDeal = deck.length()/numPlayers;
String[] ret = new String[numPlayers];
Arrays.fill(ret,"");
for( int i=0 ; i<nDeal ; i++ ){
for( int j=0 ; j<numPlayers ; j++ ){
ret[j] += deck.charAt(i*numPlayers+j);
}
}
return ret;
}
}得点は205.07/250、参照型のStringを初期化すると""でなく、nullが入るということを忘れていて、いつまでたってもnull pointer exceptionが出ていましたとさ。

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