Google Code Jam 2005 Qualification V 250

September 29th, 2005 by naoya | Filed under on.

最後の 250 点問題の紹介です。問題のタイトルは、SalesFigure です。この問題が、今まで紹介してきた 250 点問題の中で一番時間がかかったと思います。

問題の内容は、ある会社の売り上げデータが、次のようなフォーマットになっています。

CLIENT_ID CNT_1 PRODUCT_1 CNT_2 PRODUCT_2 …

CLIENT_ID は顧客の名前、CNT_x は売り上げた製品の数量、PRODUCT_x は売り上げた製品の名称です。CNT_x と PRODUCT_x は、常にセットで最大 10 までデータがある可能性があります。

また、ある一つの顧客と製品の名称が与えられて、売り上げデータから顧客に対して製品を売り上げた製品の数量を返しなさいという問題です。

例題をみてみると、売り上げデータは次のようになっています。

{"BOB 1 SHOE", "JOHN 2 SHOE", "BOB 3 SHOE 1 HORSE"}

この売り上げデータに対して、顧客名 BOB、製品名 SHOE、が与えられます。この例では、1 + 3 で 4 つ顧客 BOB に 製品 SHOE を売ったことになります。

回答コードは、次のようになりました。このコードも同様に、共通部分のコードは省略しています。


#include 

#include 

#include 

using namespace std;

class SalesFigures {

public:

  int getCount(VS sales, string client, string product) {

    int ret = 0;

    REP (i, sales.size()) {

      VS token = tokenize(sales[i], " ");

      REP (j, token.size()) {

        if (j == 0) {

          if (token[j] != client)

            break;

        }

        // PRODUCT_x

        else if (j % 2 == 0) {

          if (token[j] == product) {

            ret += strToInt(token[j - 1]);

          }

        }

      }

    }

    return ret;

  }

};

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes