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

Python의 레모네이드 변경

<시간/>

레모네이드 판매대가 있다고 가정하고 각 레모네이드의 가격은 $5입니다. 이제 고객들은 매장에서 물건을 구매하고 한 번에 하나씩 주문하기 위해 줄을 서 있습니다.

각 고객은 레모네이드를 하나만 사서 $5, $10 또는 $20 지폐로 지불할 수 있습니다. 고객이 $5를 지불하는 순 거래가 되도록 각 고객에게 정확한 변경 사항을 제공해야 합니다. 그리고 처음에는 잔고가 없습니다.

모든 고객에게 올바른 변경을 제공할 수 있는지 확인해야 합니다.

따라서 입력이 [5,5,5,10,20]과 같으면 출력은 True가 됩니다. 처음 3명의 고객으로부터 3개의 $5 지폐를 순서대로 얻을 수 있습니다. 네 번째 것에서 우리는 10달러 지폐를 모아서 5달러를 돌려줍니다. 그 후 다섯 번째 고객으로부터 10달러 지폐와 5달러 지폐를 줍니다. 모든 고객이 올바른 변경을 받았으므로 true를 출력합니다.

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

  • n5 :=0, n10 :=0, n20 :=0
  • 청구서의 각 i에 대해 다음을 수행합니다.
    • i가 5와 같으면
      • n5 :=n5 + 1
    • 그렇지 않으면 i가 10과 같을 때
      • n10 :=n10 + 1
    • 그렇지 않으면 n20 :=n20 + 1
    • 청구서 크기> 0 및 n5가 0과 같으면
      • 거짓을 반환
    • i가 20과 같고 n10> 0 및 n5> 0이면
      • n10 :=n10 - 1
      • n5 :=n5 - 1
    • 그렇지 않고 i가 20과 같고 n10이 0이고 n5 <3일 때
      • 거짓을 반환
    • 그렇지 않고 i가 20과 같고 n10이 0이고 n5>=3일 때
      • n5 :=n5 -3
    • i가 10이고 n5> 0이면
      • n5 :=n5 - 1
    • 그렇지 않고 i가 10과 같고 n5가 0과 같을 때
      • 거짓을 반환
  • 참 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

class Solution:
   def lemonadeChange(self, bills):
      n5 = 0
      n10 = 0
      n20 = 0
      for i in bills:
         if i == 5:
            n5 += 1
         elif i == 10:
            n10 += 1
         else:
            n20 += 1
         if len(bills) > 0 and n5 == 0:
            return(False)
         if i == 20 and n10 > 0 and n5 > 0:
            n10 -= 1
            n5 -= 1
         elif i == 20 and n10 == 0 and n5 < 3:
            return(False)
         elif i == 20 and n10 == 0 and n5 >= 3:
            n5 = n5 -3
         if i == 10 and n5 > 0:
            n5 -= 1
         elif i == 10 and n5 == 0:
            return (False)
      return(True)
ob = Solution()
print(ob.lemonadeChange([5,5,5,10,20]))

입력

[5,5,5,10,20]

출력

True