昨日の問題、一番早く終わったひとは3分以内でした。
すごすぎます。タイピングだけでも3分くらいかかりそうなのに。
今日の問題はかなり簡単です。
できるだけ早い時間でエレガントなコードを書きましょう。
あまりに簡単なので制限時間を10分としてやってみてください。
これ以上かかった人は
自分はかなりプログラミングができない。
とつらい事実を認識しましょう。
そして、これからすごくなりましょう。
では、10分だけこの問題に付き合ってみてください。
スタート!!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
難易度 激簡単 目標時間10分以内
あなたはこれからトランプを配っていきます。
あなたにはトランプを配る人数、
そしてトランプが渡されます。
今回はとても簡単なので例題で説明します。
例)
2つの引数がもらえます。
3
"123123123"
最初の3はプレイヤーの人数を示しています。
"123123123" はトランプの並びを示しています。あなたはこのなかのトランプを
配っていかなければなりません。
この場合、あなたのプログラムは
{"111","222","333"}
を返さなければなりません。
"111"は一番めのプレイヤーが受け取るトランプです。
"222"が2番目のプレイヤーが受け取るトランプです。
"333"が2番目のプレイヤーが受け取るトランプです。
ところが、以下のような場合もあります。
すべてのプレイヤーは同じ数だけのトランプを受け取らなければなりません。
ですので
4
"123123123"
この場合、あなたのプログラムは
{"12","23","31","12"}
を返さなければなりません。
{"123","23","31","12"} は駄目です。
では、以下にもうすこし例をのせます。
例1)
6
"012345012345012345"
Returns: {"000", "111", "222", "333", "444", "555" }
例2)
4
"111122223333"
Returns: {"123", "123", "123", "123" }
例3)
1
"012345012345012345"
Returns: {"012345012345012345" }
例4)
6
"01234"
Returns: {"", "", "", "", "", "" }
例5)
2
""
Returns: {"", "" }
クラス名、などは以下のとおりです。
Class: Cards
Method: deal
Parameters: int, String
Returns: String[]
Method signature: String[] deal(int numPlayers, String deck)
おれのプログラムです。
public class Cards{
public String[] deal(int numPlayers, String deck){
String[] cards = new String[numPlayers];
for(int i=0,len=cards.length; i<len; i++){
cards[i] = "";
}
if (numPlayers > deck.length()) return cards;
int index,total;
index = total = 0;
for(int i=0; i<deck.length(); i++){
cards[index++] += deck.charAt(i);
total++;
if (index == numPlayers){
if (deck.length() - total < numPlayers) break;
else index = 0;
}
}
return cards;
}
}