Daily LeetCode Challenge - 2439. Minimize Maximum of Array

Min Young Kim·2023년 4월 5일
0

algorithm

목록 보기
112/198

Problem From.

https://leetcode.com/problems/minimize-maximum-of-array/

오늘 문제는 리스트가 주어졌을때, 그 리스트에서 특정인덱스에 1을 더하고 그 전 인덱스에서 1을 빼는 규칙이 있을때, 리스트의 원소를 최대값으로 만든 뒤, 그 최대값을 반환하는 문제였다.

먼저 규칙을 찾으면, 특정인덱스에서 1을 빼고 그 전 인덱스에서 1을 더하면, 총 합은 변하지 않는다. 결국 모든 수의 평균을 구하는게 이 문제의 최대값을 구할 수 있는 방법이 된다.

그러므로 리스트를 처음부터 끝까지 순회하면서, 각각의 단계에서 평균을 구해나가면 답을 얻을 수 있었다. 여기서 주의할점은 평균을 구할때, 평균의 천장값을 구해야한다는 점이었다.

class Solution {
    fun minimizeArrayValue(nums: IntArray): Int {
        
        var sum = 0L
        var answer = 0L
        
        for(i in nums.indices) {
            sum += nums[i].toLong()
            answer = Math.max(answer, (sum + i) / (i + 1))
        }
        
        return answer.toInt()
    }
}
profile
길을 찾는 개발자

0개의 댓글