643. Maximum Average Subarray I

양성준·2025년 3월 31일

코딩테스트

목록 보기
1/102

https://leetcode.com/problems/maximum-average-subarray-i/description/

문제

정답

class Solution {
    public double findMaxAverage(int[] nums, int k) {
        double curr = 0;
        // 슬라이딩 윈도우(k 길이)의 첫 sum을 계산
        for(int i = 0; i < k; i++) {
            curr += nums[i];
        }

        double answer = curr;
        for(int i = k; i < nums.length; i++) {
            // 고정된 길이만큼 이동시켜야하므로, 왼쪽 하나를 빼주고 오른쪽 하나를 더해줌
            curr += nums[i] - nums[i-k]; 
            // 이전 순회까지의 answer값과 현재 순회의 curr 값을 비교하여 최대값을 갱신
            answer = Math.max(answer, curr);
        }
        return answer/k;
    }
}
  • 배열 전체를 순회하면서 고정된 크기 k의 슬라이딩 윈도우를 이동시키므로, 시간 복잡도는 O(N)
  • 문제에서 소수점 이하 최대 다섯 자리까지 정밀한 비교를 요구하기 때문에, 합계와 평균 계산에 double 타입을 사용
profile
백엔드 개발자

0개의 댓글