가격에 할인 적용

2086 단어 theabbieleetcodedsa
문장은 각 단어가 숫자, 소문자 및 달러 기호를 포함할 수 있는 단일 공백으로 구분된 단어의 문자열입니다'$'. 달러 기호가 앞에 오는 일련의 숫자인 경우 단어는 가격을 나타냅니다.
  • 예를 들어 "$100" , "$23""$6" 는 가격을 나타내지만 "100" , "$""$1e5" 는 가격을 나타내지 않습니다.

  • 문장을 나타내는 문자열sentence과 정수discount가 제공됩니다. 가격을 나타내는 각 단어에 대해 가격 할인discount%을 적용하고 문장의 단어를 업데이트합니다. 업데이트된 모든 가격은 정확히 소수점 둘째 자리로 표시되어야 합니다.

    수정된 문장을 나타내는 문자열을 반환합니다.

    모든 가격에는 최대 10자리가 포함됩니다.

    예 1:

    입력: 문장 = "가게에 $1 $2 및 5$ 사탕이 있습니다", 할인 = 50
    출력: "상점에 $0.50 $1.00 및 5$ 사탕이 있습니다."
    설명:
    가격을 나타내는 단어는 "$1"과 "$2"입니다.
  • "$1"을 50% 할인하면 "$0.50"가 생성되므로 "$1"은 "$0.50"로 대체됩니다.
  • "$2"를 50% 할인하면 "$1"이 됩니다. 가격 뒤에 정확히 소수점 이하 2자리가 필요하므로 "$2"를 "$1.00"로 바꿉니다.

  • 예 2:

    입력: 문장 = "1 2 $3 4 $5 $6 7 8$ $9 $10$", 할인 = 100
    출력: "1 2 $0.00 4 $0.00 $0.00 7 8$ $0.00 $10$"
    설명:
    가격에 100% 할인을 적용하면 0이 됩니다.
    가격을 나타내는 단어는 "$3", "$5", "$6"및 "$9"입니다.
    각각은 "$0.00"로 대체됩니다.

    제약:
  • 1 <= sentence.length <= 105
  • sentence 는 영문 소문자, 숫자, ' ' , '$' 로 구성됩니다.
  • sentence에 선행 또는 후행 공백이 없습니다.
  • sentence의 모든 단어는 하나의 공백으로 구분됩니다.
  • 모든 가격은 선행 0이 없는 양의 정수입니다.
  • 모든 가격은 최대 10자리입니다.
  • 0 <= discount <= 100

  • 해결책:

    class Solution:
        def discountPrices(self, sentence: str, discount: int) -> str:
            words = sentence.split()
            n = len(words)
            for i in range(n):
                if words[i][0] == '$' and words[i][1:].isnumeric():
                    val = words[i][1:]
                    newprice = eval(f"{val} * (1 - {discount} / 100)")
                    newprice = "{:.2f}".format(newprice)
                    words[i] = f"${newprice}"
            return " ".join(words)
    

    좋은 웹페이지 즐겨찾기