신발 가게에 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