All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g2301_2400.s2303_calculate_amount_paid_in_taxes.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g2301_2400.s2303_calculate_amount_paid_in_taxes;

// #Easy #Array #Simulation #2022_06_16_Time_1_ms_(92.41%)_Space_45.9_MB_(63.30%)

/**
 * 2303 - Calculate Amount Paid in Taxes\.
 *
 * Easy
 *
 * You are given a **0-indexed** 2D integer array `brackets` where brackets[i] = [upperi, percenti] means that the ith tax bracket has an upper bound of upperi and is taxed at a rate of percenti. The brackets are **sorted** by upper bound (i.e. upperi-1 < upperi for `0 < i < brackets.length`).
 *
 * Tax is calculated as follows:
 *
 * *   The first upper0 dollars earned are taxed at a rate of percent0.
 * *   The next upper1 - upper0 dollars earned are taxed at a rate of percent1.
 * *   The next upper2 - upper1 dollars earned are taxed at a rate of percent2.
 * *   And so on.
 *
 * You are given an integer `income` representing the amount of money you earned. Return _the amount of money that you have to pay in taxes._ Answers within 10-5 of the actual answer will be accepted.
 *
 * **Example 1:**
 *
 * **Input:** brackets = \[\[3,50],[7,10],[12,25]], income = 10
 *
 * **Output:** 2.65000
 *
 * **Explanation:**
 *
 * The first 3 dollars you earn are taxed at 50%. You have to pay $3 \* 50% = $1.50 dollars in taxes.
 *
 * The next 7 - 3 = 4 dollars you earn are taxed at 10%. You have to pay $4 \* 10% = $0.40 dollars in taxes.
 *
 * The final 10 - 7 = 3 dollars you earn are taxed at 25%. You have to pay $3 \* 25% = $0.75 dollars in taxes. You have to pay a total of $1.50 + $0.40 + $0.75 = $2.65 dollars in taxes. 
 *
 * **Example 2:**
 *
 * **Input:** brackets = \[\[1,0],[4,25],[5,50]], income = 2
 *
 * **Output:** 0.25000
 *
 * **Explanation:**
 *
 * The first dollar you earn is taxed at 0%. You have to pay $1 \* 0% = $0 dollars in taxes.
 *
 * The second dollar you earn is taxed at 25%. You have to pay $1 \* 25% = $0.25 dollars in taxes.
 *
 * You have to pay a total of $0 + $0.25 = $0.25 dollars in taxes. 
 *
 * **Example 3:**
 *
 * **Input:** brackets = \[\[2,50]], income = 0
 *
 * **Output:** 0.00000
 *
 * **Explanation:** You have no income to tax, so you have to pay a total of $0 dollars in taxes. 
 *
 * **Constraints:**
 *
 * *   `1 <= brackets.length <= 100`
 * *   1 <= upperi <= 1000
 * *   0 <= percenti <= 100
 * *   `0 <= income <= 1000`
 * *   upperi is sorted in ascending order.
 * *   All the values of upperi are **unique**.
 * *   The upper bound of the last tax bracket is greater than or equal to `income`.
**/
public class Solution {
    public double calculateTax(int[][] brackets, int income) {
        // you can remove this line
        if (income == 0) {
            return 0;
        }
        double sum = 0;
        double prev = 0;
        for (int[] bracket : brackets) {
            double salary = Math.min(bracket[0], income);
            double tax = bracket[1];
            sum += (salary - prev) * tax;
            prev = salary;
        }
        return sum / 100;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy