Легко Решено: 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

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. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.