😎풀이

  1. nums 순회
    1-1. 모든수의 합 계산
    1-2. 인덱스와 요소를 곱한 수 계산
  2. 회전을 시킨다는 것은, 모든 요소가 현재 값만큼 추가됨을 의미함
    2-1. 예를 들어, [1 * 0, 2 * 1, 3 * 2, 4 * 3]에서 1회 회전시 [1 * 1, 2 * 2, 3 * 3, 4 * 0]으로 마지막 요소를 제외하고 모두 해당 요소만큼 증가함
    2-2. 이는, 전체합을 더한 다음 마지막 요소만큼 빼면 됨, 각 회차 시 마지막 요소는 [n - i] 번째에 존재
  3. 최댓값 반환
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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글