Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

1785. Minimum Elements to Add to Form a Given Sum (주어진 합을 형성하기 위해 더해야 할 최소 요소) 본문

코딩 테스트/LeetCode

1785. Minimum Elements to Add to Form a Given Sum (주어진 합을 형성하기 위해 더해야 할 최소 요소)

포카리tea 2024. 10. 18. 15:10

정수 배열 nums와 두 개의 정수 limit 및 goal이 주어집니다. 배열 nums는 abs(nums[i]) <= limit의 흥미로운 속성을 가지고 있습니다.

배열의 합을 goal로 만들기 위해 추가해야 하는 최소 요소 수를 반환합니다. 배열은 abs(nums[i]) <= limit 속성을 유지해야 합니다.

x >= 0이면 abs(x)는 x이고 그렇지 않으면 -x입니다.

 

 

예시 1:

입력: nums = [1,-1,1], limit = 3, goal = -4
출력: 2
설명: -2와 -3을 더하면 배열의 합이 1 - 1 + 1 - 2 - 3 = -4가 됩니다.

 

예시 2:

입력: nums = [1,-10,9,1], limit = 100, goal = 0
출력: 1

 

 

조건:

  • 1 <= nums.length <= 10^5
  • 1 <= limit <= 10^6
  • -limit <= nums[i] <= limit
  • -10^9 <= goal <= 10^9

 

정답:

public class Solution {
    public int MinElements(int[] nums, int limit, int goal) {
        long num = 0;
        
        foreach (var i in nums)
        {
            num += i;
        }
        num = Math.Abs(num - goal);

        if (num % limit == 0)
        {
            return (int)(num / limit);
        }
        else
        {
            return (int)(num / limit + 1);
        }
    }
}

해설: nums의 합을 우선적으로 구한 후 nums의 합에 goal을 뺀값을 절대값으로 변경해줍니다.

해당 절대값에 limit를 나눴을 때 나머지가 0이라면 나눈 값을 바로 return해주고 나머지가 0이아니라면 나눈 값에 1을 더해주고 return합니다.