10分でコーディング | プログラミングに自信があるやつこい!!

10分でコーディング

昨日の問題、一番早く終わったひとは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;
  }
}