Medium 0 solved 0% acceptance

Weekly Payroll

Total a week's pay for salaried, hourly and commission employees, each paid by its own rule.

What you'll learn

  • Compute pay with a rule per employee type
  • Pay overtime above 40 hours
  • Sum decimal amounts accurately

Problem

A payroll system treats every employee as an Employee with a WeeklyPay() method, and each kind of employee overrides it.

Each employee is written as:

  • salaried <annual>: earns annual / 52.
  • hourly <rate> <hours>: earns rate × hours for the first 40 hours and 1.5 × rate for every hour beyond 40.
  • commission <base> <rate> <sales>: earns base + rate × sales.

Implement weekly_payroll(employees).

Input

employees: The employees. Numbers may have decimals.

Output

Return the total weekly pay. Answers within 1e-6 are accepted.

Constraints

0 ≤ number of employees ≤ 10,000

All numbers are between 0 and 10^7; hours ≤ 100

Examples

Example 1
Input:
employees = ["salaried 52000", "hourly 20 45"]

Expected output:
expected = 1950.0
Input:
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};

Expected output:
double expected = 1950.0;
Input:
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};

Expected output:
double expected = 1950.0;

Explanation

The salaried employee earns 52000 / 52 = 1000. The hourly one earns 20 × 40 + 30 × 5 = 950. Total 1950.

Example 2
Input:
employees = ["commission 300 0.1 2500"]

Expected output:
expected = 550.0
Input:
std::vector<std::string> employees = {"commission 300 0.1 2500"};

Expected output:
double expected = 550.0;
Input:
string[] employees = new string[] {"commission 300 0.1 2500"};

Expected output:
double expected = 550.0;

Explanation

300 + 0.1 × 2500 = 550.

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

Handle each employee type with its own formula.

Hint 2

Hourly pay is normal for the first 40 hours and 1.5 times the rate after that.

Hint 3

Keep decimals: salaries divided by 52 rarely give whole numbers.

Expected complexity

O(number of employees) time, O(1) extra space

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.