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