[Easy] 1491. Average Salary Excluding the Minimum and Maximum Salary

https://leetcode.com/problems/average-salary-excluding-the-minimum-and-maximum-salary/

 

Average Salary Excluding the Minimum and Maximum Salary - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제

You are given an array of unique integers salary where salary[i] is the salary of the ith employee.

Return the average salary of employees excluding the minimum and maximum salary. Answers within 10-5 of the actual answer will be accepted.

직원들 월급의 최소, 최대값을 제외한 평균값을 반환하는 문제이다.

 

예시

Example 1:

Input: salary = [4000,3000,1000,2000]
Output: 2500.00000
Explanation: Minimum salary and maximum salary are 1000 and 4000 respectively.
Average salary excluding minimum and maximum salary is (2000+3000) / 2 = 2500

Example 2:

Input: salary = [1000,2000,3000]
Output: 2000.00000
Explanation: Minimum salary and maximum salary are 1000 and 3000 respectively.
Average salary excluding minimum and maximum salary is (2000) / 1 = 2000

 

제약조건

Constraints:

  • 3 <= salary.length <= 100
  • 1000 <= salary[i] <= 106
  • All the integers of salary are unique.

 

해결 과정

새로운 스터디플랜이 시작돼서 그런지 문제가 매우 쉬웠다. 

  • 최대, 최소값을 제외시키기 위해 우선적으로 오름차순으로 정렬한다.
  • 평균값을 구하기 위한 sum 변수를 초기화한다.
  • 인덱스 처음 값(0), 인덱스 마지막 값(salary.length - 1)을 제외한 값들을 sum에 더한다.
  • 최소, 최대값을 제외했으니 salary.length에서 2를 제외한 값으로 나누어준다.

 

해결 코드

/**
 * @param {number[]} salary
 * @return {number}
 */
var average = function(salary) {
    salary.sort((a, b) => a- b);
    
    let sum = 0;
    for(let i = 1 ; i < salary.length - 1 ; i++){
        sum += salary[i];
    }
    
    return sum/(salary.length - 2)
};