숫자가 하나씩 들어오는 배열 nums와 창 크기 k가 주어져요. 값이 하나 들어올 때마다 가장 최근 K개의 평균을 구해서, 그 평균들을 순서대로 담은 배열로 반환해요.
아직 K개가 안 모였다면 지금까지 들어온 값 전부의 평균을 써요. K개를 넘기면 가장 오래된 값은 창에서 빠져요. 예를 들어 k = 3이면 4번째 값부터는 바로 앞 3개만 평균에 넣어요.
예시
예시 1
예시 2
제한 사항
- 1 ≤ k ≤ nums.length ≤ 100,000
- -10,000 ≤ nums[i] ≤ 10,000
창 안의 값을 큐(또는 덱)에 담아 둬요. 새 값을 넣을 때 합에 더하고, 창이 K를 넘으면 가장 오래된 값을 큐에서 빼면서 그만큼 합에서도 빼요. 그러면 매 단계 평균을 창 크기에 상관없이 빠르게 구할 수 있어요.
javascriptCopy codefunction movingAverage(nums, k) {const result = [];const window = [];let head = 0;let sum = 0;for (const n of nums) {window.push(n);sum += n;if (window.length - head > k) {sum -= window[head];head++;}result.push(sum / (window.length - head));}return result;}
예시 테스트만 실행 (Cmd/Ctrl+Enter)
숨김 테스트까지 채점 (Cmd/Ctrl+Shift+Enter)
에디터를 불러오고 있어요…
코드를 작성하고Ctrl↵를 눌러 예시 테스트를 확인해 보세요.