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

กฎของบัญชีธนาคาร

ปกป้องยอดเงินในบัญชีด้วยกฎการฝากและถอน โดยปฏิเสธรายการที่ไม่ถูกต้อง

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

  • เปลี่ยนสถานะผ่านเมธอดเท่านั้น
  • ปฏิเสธจำนวนเงินที่ผิดและการถอนเกินยอด
  • นับคำสั่งที่ถูกปฏิเสธ

โจทย์

Encapsulation ช่วยให้ข้อมูลของอ็อบเจ็กต์เป็นส่วนตัว และเปลี่ยนแปลงได้ผ่านเมธอดที่บังคับใช้กฎเท่านั้น ยอดเงินของบัญชีธนาคารเปลี่ยนได้ผ่าน deposit และ withdraw เท่านั้น

เริ่มต้นด้วยยอดเงิน 0 และประมวลผล operations แต่ละรายการ deposit <amount> หรือ withdraw <amount>:

  • จำนวนที่เป็น 0 หรือค่าติดลบจะถูกปฏิเสธ
  • การถอนที่มากกว่ายอดเงินปัจจุบันจะถูกปฏิเสธ
  • มิฉะนั้นยอดเงินจะเปลี่ยนแปลง

Implement bank_account_rules(operations).

อินพุต

operations: The operations, in order.

เอาต์พุต

Return [final_balance, rejected_count].

เงื่อนไข

0 ≤ จำนวนคำสั่ง ≤ 100,000

−10^9 ≤ จำนวนเงิน ≤ 10^9

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]

ผลลัพธ์ที่คาดหวัง:
expected = [70, 1]
อินพุต:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};

ผลลัพธ์ที่คาดหวัง:
std::vector<long long> expected = {70, 1};
อินพุต:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};

ผลลัพธ์ที่คาดหวัง:
long[] expected = new long[] {70, 1};

คำอธิบาย

100 − 30 เหลือ 70 การถอน 200 จะทำให้ติดลบ จึงถูกปฏิเสธ: [70, 1]

ตัวอย่างที่ 2
อินพุต:
operations = ["deposit -5", "withdraw 0", "deposit 10"]

ผลลัพธ์ที่คาดหวัง:
expected = [10, 2]
อินพุต:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};

ผลลัพธ์ที่คาดหวัง:
std::vector<long long> expected = {10, 2};
อินพุต:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};

ผลลัพธ์ที่คาดหวัง:
long[] expected = new long[] {10, 2};

คำอธิบาย

การฝากติดลบและการถอนเป็นศูนย์ถูกปฏิเสธทั้งคู่ ส่วนการฝากครั้งสุดท้ายสำเร็จ: [10, 2]

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

เก็บยอดเงินเป็น private และแก้ได้เฉพาะใน deposit และ withdraw

คำใบ้ 2

ปฏิเสธจำนวนเงินที่เป็น 0 หรือน้อยกว่าก่อนอย่างอื่น

คำใบ้ 3

การถอนต้องไม่ทำให้ยอดเงินต่ำกว่าศูนย์

ความซับซ้อนที่คาดหวัง

เวลา O(จำนวนคำสั่ง), หน่วยความจำเพิ่ม O(1)

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

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

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

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