Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

신발을 팔아서 얼마나 많은 돈을 벌 수 있는지 알아보는 파이썬 프로그램

<시간/>

신발 가게에 size라는 배열에 크기가 다른 n개의 다른 신발이 있고 수요라고 하는 m명의 고객에 대한 또 다른 쌍 목록이 제공된다고 가정합니다. 사이즈가 shoe_size인 신발에 대한 수요로 주어진 금액만큼 지불할 수 있습니다. 우리는 가게 주인이 이 신발을 팔아서 얼마나 많은 돈을 벌 수 있는지 찾아야 합니다.

따라서 입력이 신발과 같다면 =[2,3,4,5,6,8,7,6,5,18] 수요 =[(6,55), (6,45), (6,55) , (4,40), (18,60), (10,50)], 출력은 200이 됩니다.

  • 첫 번째 사람은 55에 사이즈 6의 신발을 구입합니다.

  • 두 번째 사람은 45에 사이즈 6의 신발을 구입합니다.

  • 재고에 사이즈 6의 신발이 없습니다.

  • 네 번째는 40 사이즈의 신발을 40에 구입합니다.

  • 다섯 번째는 18 사이즈의 신발을 60에 구입합니다.

  • 여섯 번째는 10 사이즈의 신발이 없기 때문에 신발을 받지 못할 것입니다.


총 수익 55 + 45 + 40 + 60 =200.


이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n :=수요 규모
  • 크기 :=크기에 따른 신발의 빈도를 포함하는 지도
  • 수입 :=0
  • 0 ~ n - 1 범위의 i에 대해
    • (sz, 가격) :=수요[i]
    • sz 크기의 신발이 크기에 있는 경우
      • 크기[sz] :=크기[sz] - 1
      • 벌기 :=벌기 + 가격
  • 수익금

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

from collections import Counter
def solve(shoes, demand):
   n = len(demand)
   sizes = Counter(shoes)
   earn = 0
   for i in range(n):
      sz, price = demand[i]
      if sizes[sz]:
         sizes[sz] -= 1
         earn += price
   return earn

shoes = [2,3,4,5,6,8,7,6,5,18]
demand = [(6,55), (6,45), (6,55), (4,40), (18,60), (10,50)]
print(solve(shoes, demand))

입력

[2,3,4,5,6,8,7,6,5,18], [(6,55), (6,45), (6,55), (4,40), (18,60),
(10,50)]

출력

200