코딩 테스트/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합니다.