코딩 테스트/LeetCode

1827. Minimum Operations to Make the Array Increasing (배열 증가를 위한 최소 작업)

포카리tea 2024. 10. 14. 14:09

정수 배열 nums(0-indexed)가 주어집니다. 한 번의 작업으로 배열의 요소를 선택하고 1씩 늘릴 수 있습니다.

예를 들어 nums = [1,2,3]인 경우 nums[1]을 증가시켜 nums = [1,3,3]을 만들 수 있습니다.
숫자를 엄격하게 증가시키는 데 필요한 최소 연산 수를 반환합니다.

배열 nums는 0 <= i < nums.length - 1에 대해 모두 nums[i] < nums[i+1]이면 엄격하게 증가합니다. 길이 1의 배열은 매우 엄격하게 증가합니다.

 

 

예시 1:

입력: nums = [1,1,1]
출력: 3
설명: 다음 작업을 수행할 수 있습니다:
1) 숫자[2]를 증가시키므로 숫자는 [1,1,2]가 됩니다.
2) 숫자[1]을 증가시키므로 숫자는 [1,2,2]가 됩니다.
3) 숫자[2]를 증가시키므로 숫자는 [1,2,3]이 됩니다.

 

예시 2:

입력: nums = [1,5,2,4,1]
출력: 14

 

예시 3:

입력: nums = [8]
출력: 0

 

조건:

  • 1 <= nums.length <= 5000
  • 1 <= nums[i] <= 10^4

 

정답:

public class Solution {
    public int MinOperations(int[] nums) {
         int result = 0;
        
        for (int i = 1; i < nums.Length; i++)
        {
            if (nums[i - 1] >= nums[i])
            {
                result += nums[i - 1] - nums[i] + 1;
                nums[i] += nums[i - 1] - nums[i] + 1;
            }
        }

        return result;
    }
}

해설: nums[i] < nums[i+1]가 진행될 수 있도록 nums[i - 1] >= nums[i]를 비교하고 만약 해당한다면 차이만큼 result에 더한 후 nums[i]에 값을 더해주고 변경된 값에서 해당 작업을 반복하고 result를 return합니다.