Shopping Cart

Shopping Cart

Medium Programming Interview OOP 24 views
Explanation Complexity

Problem Statement

You will receive q commands: ADD item price, REMOVE item, TOTAL. Create Cart class. TOTAL prints sum of prices of current items.

Input Format

First line q. Next q lines commands.

Output Format

Outputs for TOTAL.

Example

7
ADD pen 10
ADD book 50
TOTAL
REMOVE pen
TOTAL
REMOVE book
TOTAL
60
50
0

Constraints

q

Input / Output Format

Input Format
First line q. Next q lines commands.
Output Format
Outputs for TOTAL.
Constraints
q

Examples

Input:
7 ADD pen 10 ADD book 50 TOTAL REMOVE pen TOTAL REMOVE book TOTAL
Output:
60 50 0

Example Solution (Public)

Programming Interview
import sys
lines=sys.stdin.read().splitlines()
if not lines: sys.exit(0)
q=int(lines[0].strip())
class Cart:
  def __init__(self):
    self.mp={}
    self.total=0
  def add(self,item,price):
    if item in self.mp:
      self.total-=self.mp[item]
    self.mp[item]=price
    self.total+=price
  def remove(self,item):
    if item in self.mp:
      self.total-=self.mp[item]
      del self.mp[item]
  def get_total(self):
    return self.total
c=Cart()
out=[]
for i in range(1,1+q):
  parts=(lines[i] if i<len(lines) else '').split()
  if not parts: continue
  if parts[0]=='ADD':
    c.add(parts[1],int(parts[2]))
  elif parts[0]=='REMOVE':
    c.remove(parts[1])
  else:
    out.append(str(c.get_total()))
print('\
'.join(out))

Official Solution Code

import sys
lines=sys.stdin.read().splitlines()
if not lines: sys.exit(0)
q=int(lines[0].strip())
class Cart:
  def __init__(self):
    self.mp={}
    self.total=0
  def add(self,item,price):
    if item in self.mp:
      self.total-=self.mp[item]
    self.mp[item]=price
    self.total+=price
  def remove(self,item):
    if item in self.mp:
      self.total-=self.mp[item]
      del self.mp[item]
  def get_total(self):
    return self.total
c=Cart()
out=[]
for i in range(1,1+q):
  parts=(lines[i] if i<len(lines) else '').split()
  if not parts: continue
  if parts[0]=='ADD':
    c.add(parts[1],int(parts[2]))
  elif parts[0]=='REMOVE':
    c.remove(parts[1])
  else:
    out.append(str(c.get_total()))
print('\
'.join(out))
Please login to submit solutions.
Editor
Output

                                        
Please login to submit solutions.