세금 납부 금액 계산

2262 단어 theabbieleetcodedsa
인덱스가 0인 2D 정수 배열brackets이 주어집니다. 여기서 brackets[i] = [upperi, percenti]ith 세금 괄호의 상한이 upperi이고 세율이 percenti로 부과됨을 의미합니다. 괄호는 상한선으로 정렬됩니다(즉, upperi-1 < upperi 에 대한 0 < i < brackets.length ).

세금은 다음과 같이 계산됩니다.
  • 첫 번째upper0 달러는 percent0의 세율로 과세됩니다.
  • 다음 번 upper1 - upper0 달러는 percent1의 세율로 과세됩니다.
  • 다음 번 upper2 - upper1 달러는 percent2의 세율로 과세됩니다.
  • 등등.

  • 귀하가 번 금액을 나타내는 정수income가 제공됩니다. 세금으로 내야 할 금액을 반환하십시오. 실제 답변의 10-5 이내 답변이 허용됩니다.

    예 1:

    입력: 괄호 = [[3,50],[7,10],[12,25]], 소득 = 10
    출력: 2.65000
    설명:
    처음 3달러에 50%의 세금이 부과됩니다. 세금으로 $3 * 50% = $1.50 달러를 지불해야 합니다.
    다음 7 - 3 = 4달러에 10%의 세금이 부과됩니다. 세금으로 $4 * 10% = $0.40 달러를 지불해야 합니다.
    최종 10 - 7 = 3달러에 25%의 세금이 부과됩니다. 세금으로 $3 * 25% = $0.75 달러를 지불해야 합니다.
    세금으로 총 $1.50 + $0.40 + $0.75 = $2.65 달러를 지불해야 합니다.

    예 2:

    입력: 괄호 = [[1,0],[4,25],[5,50]], 소득 = 2
    출력: 0.25000
    설명:
    당신이 버는 첫 달러는 0%의 세금이 부과됩니다. 세금으로 $1 * 0% = $0 달러를 지불해야 합니다.
    두 번째로 벌어들인 달러에는 25%의 세금이 부과됩니다. 세금으로 $1 * 25% = $0.25 달러를 지불해야 합니다.
    세금으로 총 $0 + $0.25 = $0.25 달러를 지불해야 합니다.

    예 3:

    입력: 괄호 = [[2,50]], 소득 = 0
    출력: 0.00000
    설명:
    귀하는 과세할 소득이 없으므로 세금으로 총 $0 달러를 지불해야 합니다.

    제약:
  • 1 <= brackets.length <= 100
  • 1 <= upperi <= 1000
  • 0 <= percenti <= 100
  • 0 <= income <= 1000
  • upperi는 오름차순으로 정렬됩니다.
  • upperi의 모든 값은 고유합니다.
  • 마지막 과세 등급의 상한은 income보다 크거나 같습니다.

  • 해결책:

    class Solution:
        def calculateTax(self, brackets: List[List[int]], income: int) -> float:
            rem = income
            tax = 0
            prev = 0
            for b, p in brackets:
                if income >= b:
                    tax += (b - prev) * p
                    rem -= (b - prev)
                    prev = b
                elif rem > 0:
                    tax += rem * p
                    rem = 0
                    break
            return tax / 100
    

    좋은 웹페이지 즐겨찾기