簡単 0件解決済み 正答率0%

Notification Costs

Send messages through email, SMS and push channels that each compute their own cost.

このチャレンジで学べること

  • Give each channel its own cost rule
  • Round up to whole blocks of characters
  • Split a message into channel and text

問題

翻訳を表示

Polymorphism lets code call the same method on different objects and get behaviour specific to each one. Here every channel computes the cost of a message its own way.

Each message is <channel> <text>, where the text is everything after the first space:

  • email: costs 1.
  • sms: costs 5 for every started block of 160 characters of text (1 to 160 characters is one block).
  • push: free.

Implement notification_cost(messages).

Input

messages: The messages to send. SMS texts have at least one character.

Output

Return the total cost.

制約

0 ≤ number of messages ≤ 10,000

Texts have 1 to 2,000 characters

例

例 1
入力:
messages = ["email Welcome!", "sms Your code is 1234", "push New follower"]

期待される出力:
expected = 6
入力:
std::vector<std::string> messages = {"email Welcome!", "sms Your code is 1234", "push New follower"};

期待される出力:
long long expected = 6;
入力:
string[] messages = new string[] {"email Welcome!", "sms Your code is 1234", "push New follower"};

期待される出力:
long expected = 6;

解説

Email costs 1, the short SMS uses one block (5) and push is free: 6.

例 2
入力:
messages = ["sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]

期待される出力:
expected = 10
入力:
std::vector<std::string> messages = {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};

期待される出力:
long long expected = 10;
入力:
string[] messages = new string[] {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};

期待される出力:
long expected = 10;

解説

161 characters need two 160-character blocks: 2 × 5 = 10.

解き方のヒント

まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。

ヒント 1

Split each message once at the first space into channel and text.

ヒント 2

For SMS, count blocks with ceiling division: (length + 159) / 160.

ヒント 3

Push messages cost nothing, so they add 0.

目安の計算量

O(total length) time, O(1) extra space

参考資料

この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。