
😎풀이
nums 순회
1-1. 모든수의 합 계산
1-2. 인덱스와 요소를 곱한 수 계산
- 회전을 시킨다는 것은, 모든 요소가 현재 값만큼 추가됨을 의미함
2-1. 예를 들어, [1 * 0, 2 * 1, 3 * 2, 4 * 3]에서 1회 회전시 [1 * 1, 2 * 2, 3 * 3, 4 * 0]으로 마지막 요소를 제외하고 모두 해당 요소만큼 증가함
2-2. 이는, 전체합을 더한 다음 마지막 요소만큼 빼면 됨, 각 회차 시 마지막 요소는 [n - i] 번째에 존재
- 최댓값 반환
function maxRotateFunction(nums: number[]): number {
const n = nums.length
let max = -Infinity
let sum = 0
let curr = 0
for(let i = 0; i < n; i++) {
sum += nums[i]
curr += i * nums[i]
}
max = Math.max(max, curr)
for(let i = 1; i < n; i++) {
curr = curr + sum - n * nums[n - i]
max = Math.max(max, curr)
}
return max
};