collections.counter()| hackerrank | Python
#初学者 #python #codenewbie #hackerrank

问题

Raghu是一家鞋店老板,拥有X鞋的数量。他有一个清单,其中包含库存中每鞋的大小。 There are N customers, each willing to pay x 1 x_1 amount of money, but only if they get the shoe of their desired size.

Your task is to calculate the total amount of money Raghu will earn based on these conditions.

输入

第一行包含X,鞋总数。
第二行包含商店中所有鞋子的空间分隔清单。
第三行包含n,客户总数。
下一个n行包含客户所需的shoe size的空间分隔值, x 1 x_1 , the price they are willing to pay for the shoe.

约束

  • 0态3 0 \lt X \lt 10^3
  • 0<N1030 \lt N \le 10^3
  • 20<x1<10020 \lt x_1 \lt 100
  • 2<shoesize<202 \lt shoe size \lt 20

Sample Input:

daima0

4 输出

输出应为Raghu赚取的总金额。

样本输出:

200

解释

客户1:以$ 55的价格购买了6鞋。
客户2:以$ 45的价格购买了6鞋。
客户3:尺寸6不再可用,因此不购买。
客户4:以$ 40的价格购买了4鞋。
客户5:以$ 60的价格购买了18鞋。
客户6:尺寸10不可用,因此不购买。

总钱 = 55 + 45 +>+ 40 +>+ 60 = 200 = 55 + 45 + 40 + 60 = 200

解决方案

要解决这个问题,我们需要跟踪可用的鞋子,并在我们的所需尺寸上出售给客户。这可以使用Python collections.Counter类有效地完成,该类别计算列表中元素的出现数量。

代码

这是解决此问题的Python代码:

from collections import Counter as ctr

_ = input()
shoe_sizes_counter = ctr(map(int, input().split(' ')))
earning = 0

for _ in range(int(input())):
    size, price = tuple(map(int, input().split(' ')))
    if shoe_sizes_counter.get(size, 0):
        earning += price
        shoe_sizes_counter[size] -= 1

print(earning)

此代码维护可用鞋子尺寸的计数器。对于每个客户,它检查所需的鞋子是否可用。如果是这样,则将客户的价格添加到总收入中,并且鞋子的尺寸从柜台降低。然后打印最终收入。

Original Source

有关更有见地的解决方案和与技术相关的内容,请随时在我的Beacons page上与我联系。

ranggakd - Link in Bio & Creator Tools | Beacons

@ranggakd |中心详细信息摘要摘要哦,您好,我是一个程序员AI Tech Writer Data Suctioner数据实践者数学瘾君子开源贡献者量子计算爱好者详细信息中心。

favicon 信标