सभी चुनौतियाँ
आसान 0 हल किए गए 0% स्वीकृति

नोटिफ़िकेशन की लागत

ईमेल, SMS और push से संदेश भेजें, जहाँ हर चैनल अपनी लागत खुद गिनता है।

आप क्या सीखेंगे

  • हर चैनल को लागत का अपना नियम देना
  • कैरेक्टर के पूरे ब्लॉक तक ऊपर राउंड करना
  • संदेश को चैनल और टेक्स्ट में बाँटना

समस्या

पॉलिमॉर्फ़िज़्म अलग-अलग ऑब्जेक्ट पर एक ही मेथड बुलाने देता है और हर ऑब्जेक्ट का अपना व्यवहार मिलता है। यहाँ हर चैनल संदेश की लागत अपने तरीके से गिनता है।

हर संदेश <channel> <text> के रूप में है, जहाँ text पहले स्पेस के बाद का सब कुछ है:

  • email: लागत 1।
  • sms: टेक्स्ट के हर शुरू हुए 160 कैरेक्टर ब्लॉक के लिए 5 (1 से 160 कैरेक्टर एक ब्लॉक)।
  • push: मुफ़्त।

लिखें: notification_cost(messages).

इनपुट

messages: भेजे जाने वाले संदेश। SMS टेक्स्ट में कम से कम एक कैरेक्टर होता है।

आउटपुट

कुल लागत लौटाएँ।

सीमाएँ

0 ≤ संदेशों की संख्या ≤ 10,000

टेक्स्ट 1 से 2,000 कैरेक्टर के

उदाहरण

उदाहरण 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;

व्याख्या

ईमेल 1, छोटा SMS एक ब्लॉक (5) और push मुफ़्त: 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 कैरेक्टर के लिए 160 कैरेक्टर के दो ब्लॉक चाहिए: 2 × 5 = 10।

कैसे हल करें

पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।

संकेत 1

हर संदेश को पहले स्पेस पर एक बार बाँटकर चैनल और टेक्स्ट निकालें।

संकेत 2

SMS के लिए ऊपर राउंड वाले भाग से ब्लॉक गिनें: (length + 159) / 160।

संकेत 3

push मुफ़्त है, इसलिए 0 जोड़ें।

अपेक्षित जटिलता

समय O(कुल लंबाई), अतिरिक्त स्थान O(1)

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।