โจทย์ทั้งหมด
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

ค่าใช้จ่ายการแจ้งเตือน

ส่งข้อความผ่านอีเมล SMS และ push โดยแต่ละช่องทางคำนวณค่าใช้จ่ายของตัวเอง

สิ่งที่คุณจะได้เรียนรู้

  • ให้แต่ละช่องทางมีกฎคิดค่าของตัวเอง
  • ปัดขึ้นเป็นบล็อกอักขระเต็ม
  • แยกข้อความเป็นช่องทางและเนื้อหา

โจทย์

Polymorphism ช่วยให้เรียกเมธอดเดียวกันบนออบเจกต์ต่างชนิดแล้วได้พฤติกรรมเฉพาะของแต่ละตัว ในที่นี้แต่ละช่องทางคำนวณค่าใช้จ่ายของข้อความในแบบของตัวเอง

แต่ละข้อความอยู่ในรูป <channel> <text> โดย text คือทุกอย่างหลังช่องว่างแรก:

  • email: คิด 1
  • sms: คิด 5 ต่อทุกบล็อก 160 อักขระที่เริ่มใช้ (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 กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก