>  기사  >  백엔드 개발  >  . 레모네이드 변경

. 레모네이드 변경

PHPz
PHPz원래의
2024-08-16 06:43:06475검색

. Lemonade Change

860. 레모네이드 체인지

난이도: 쉬움

주제: 배열, 탐욕

레모네이드 가판대에서는 각 레모네이드 가격이 5달러입니다. 고객은 귀하로부터 제품을 구매하고 한 번에 하나씩 주문하기 위해(청구서에 지정된 순서대로) 줄을 서 있습니다. 각 고객은 레모네이드 하나만 구매하고 5달러, 10달러 또는 20달러 지폐로 지불합니다. 순 거래 금액이 고객이 $5를 지불하도록 각 고객에게 올바른 잔돈을 제공해야 합니다.

주의 처음에는 잔돈이 없다는 점을 주의하세요.

bills[i]가 i번째 고객이 지불하는 청구서인 정수 배열 bills가 주어지면 모든 고객에게 올바른 변경 사항을 제공할 수 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. .

예 1:

  • 입력: 청구서 = [5,5,5,10,20]
  • 출력: true
  • 설명:
    • 선착순 3명의 고객 중 5달러 지폐 3장을 순서대로 모읍니다.
    • 네 번째 고객부터는 10달러짜리 지폐를 모아서 5달러를 돌려드립니다.
    • 다섯 번째 고객부터는 10달러 지폐와 5달러 지폐를 드립니다.
    • 모든 고객이 올바른 변경사항을 받았으므로 true를 출력합니다.

예 2:

  • 입력: 청구서 = [5,5,10,10,20]
  • 출력: false
  • 설명:
    • 순서대로 선착순 2명부터 5달러 지폐 2장을 수거합니다.
    • 다음 주문 고객 2명에 대해서는 10달러 지폐를 모아 5달러 지폐를 돌려드립니다.
    • 마지막 고객님께는 10달러짜리 지폐 2장밖에 없기 때문에 잔돈 15달러를 돌려드릴 수 없습니다.
    • 모든 고객이 올바른 변경사항을 받지 못했기 때문에 대답은 거짓입니다.

제약조건:

  • 5
  • bills[i]는 5, 10 또는 20입니다.

해결책:

고객이 지불하는 데 사용하는 청구서를 기반으로 고객에게 변경 사항을 제공하는 프로세스를 시뮬레이션해야 합니다. 중요한 것은 보유하고 있는 5달러 및 10달러 지폐의 수를 추적하는 것입니다. 이는 더 큰 지폐에 잔돈을 제공하는 데 필요하기 때문입니다

이 솔루션을 PHP: 860으로 구현해 보겠습니다. 레모네이드 체인지

설명:

  1. 초기화: $5와 $10을 0으로 설정하여 시작합니다. 이는 우리가 가지고 있는 $5와 $10 지폐의 수를 나타냅니다.

  2. 각 청구서 처리:

    • 고객이 5달러 지폐로 결제하는 경우: 단순히 5달러 지폐의 개수만 증가합니다.
    • 고객이 10달러 지폐로 결제하는 경우: 5달러 지폐 한 장을 거스름돈으로 돌려주어야 하므로 5달러 지폐의 수를 줄이고 10달러의 수를 늘립니다. 5달러 지폐가 없으면 false를 반환합니다.
    • 고객이 20달러 지폐로 결제한 경우: 잔돈으로 10달러 지폐 1장과 5달러 지폐 1장을 우선적으로 드립니다. 그것이 가능하지 않다면, 우리는 5달러짜리 지폐 세 장을 주려고 노력합니다. 두 옵션 모두 사용할 수 없는 경우 false를 반환합니다.
  3. 최종 확인: 변경 사항 없이 모든 고객을 성공적으로 처리한 경우 true를 반환합니다.

엣지 케이스:

  • 이 기능은 필요한 5달러 지폐를 준비하지 않은 채 10달러 또는 20달러 지폐를 너무 일찍 받은 경우와 같이 정확한 잔돈을 제공하는 것이 불가능한 시나리오를 처리해야 합니다.
  • 제약으로 인해 큰 입력 크기(최대 100,000명의 고객)를 효율적으로 처리해야 합니다. 솔루션은 O(n) 시간 복잡도에서 실행되므로 이 문제에 최적입니다.

연락처 링크

이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!

이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.

  • 링크드인
  • 깃허브

위 내용은 . 레모네이드 변경의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.