TIL
TIL_20230501
번잔중
2023. 5. 1. 23:06
오늘 할 일
- LeetCode 데일리 문제 풀기
오늘 배운 것
LeetCode 데일리 문제 풀기
- 오늘의 문제: 1491. Average Salary Excluding the Minimum and Maximum Salary(https://leetcode.com/problems/average-salary-excluding-the-minimum-and-maximum-salary/)
- 문제 조건
- 유일한 정수로만 이루어진 salary 배열이 주어지고, salary[i]는 i번째 직원의 월급이다.
- 최대와 최소 월급을 제외한 직원들의 월급 평균을 반환해라. 실제 답변은 소수점 아래 5번째까지만 표시한다.
- 문제 해결 과정
- 배열 salary의 최대와 최소 월급을 찾아서 저장한 후에 salary 배열을 순회하면서 최대, 최소인 경우에는 continue로 넘어가고 나머지 숫자는 모두 더한다.
- 그 후 더한 숫자를 salary - 2로 나누어주면 최대와 최소를 제외한 합의 평균을 구할 수 있다.
- 기존 정답
class Solution {
public double average(int[] salary) {
double ans = 0.0;
int maxNum = Arrays.stream(salary).max().getAsInt();
int minNum = Arrays.stream(salary).min().getAsInt();
for (int sal : salary) {
if (maxNum == sal || minNum == sal)
continue;
ans += (double) sal;
}
ans /= (double) (salary.length - 2);
return ans;
}
}
- 더 효율적인 코드
class Solution {
public double average(int[] salary) {
Arrays.sort(salary);
double sum = 0.0;
for (int sal : salary) {
sum += sal;
}
return (sum - (salary[0] + salary[salary.length - 1])) / (double) (salary.length - 2);
}
}
느낀점
- 역시 월요일에는 리트코드 이지 난이도네요. 오늘 문제도 시간복잡도를 줄일 수 있는 방법을 찾아보면서 고민해보았습니다. 할 때는 살짝 짜증도 나지만 풀어내면 기분이 좋네요.
- 몇 일 동안 몸 상태가 안좋아서 계속 잠만 자다가 약속을 나가게 됐네요. 이후 빠른 귀가 ㅠ
- 내일 알바 출근이 오전이라 오늘 일찍 자야겠습니다. 알바 근무지가 이사를 하게 돼서 집에서 걸리는 시간이 반으로 줄어들었습니다. ㅎㅎㅎ기분 좋은 소식~~
내일 할 일
- LeetCode 데일리 문제 풀기
- 원티드 프리온보딩