본문 바로가기

Algorithm/Greedy

(C++, Python) - LeetCode (easy) 1913. Maximum Product Difference Between Two Pairs

반응형

https://leetcode.com/problems/maximum-product-difference-between-two-pairs/

간단한 greedy 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

nums를 오름차순으로 정렬해줍니다.

📔 풀이과정

차이가 가장 커지기 위해서는 곱의 최댓값과 최솟값의 차이를 구하면 됩니다.

1. 곱이 가장 큰 경우: nums에서 최댓값과 두 번째로 큰 값을 곱하는 경우입니다. 즉, 오름차순으로 정렬했을 때 nums.size() - 1번째 값과 num.size() - 2번째 값을 곱하면 됩니다.

2. 곱이 가장 작은 경우: nums에서 최솟값과 두 번째로 작은 값을 곱하는 경우입니다.

📔 정답 출력 | 반환

1번 경우의 값에서 2번 경우의 값을 뺀 값을 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    int maxProductDifference(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int sz = nums.size();
        return nums[sz-1] * nums[sz-2] - nums[1] * nums[0];
    }
};

📔 Python

class Solution(object):
    def maxProductDifference(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        return nums[-1] * nums[-2] - nums[0] * nums[1]

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.