Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 서로 다른 세 요소의 최대 곱을 구하는 프로그램

숫자로 이루어진 리스트 nums가 주어졌을 때, 서로 다른 세 요소를 곱하여 만들 수 있는 가장 큰 값을 찾는 문제입니다.

예를 들어 입력이 nums = [6, 1, 2, 4, -3, -4]라면 출력은 72가 됩니다. 음수끼리 곱하면 양수가 되기 때문에 (-3) × (-4) × 6 = 72라는 결과를 얻을 수 있습니다.

해결 접근 방법

이 문제는 리스트를 한 번 정렬한 뒤, 가능한 두 가지 후보 조합만 비교하면 효율적으로 해결할 수 있습니다.

  • 리스트 nums를 오름차순으로 정렬합니다.
  • nnums의 길이로 설정합니다.
  • maxScore를 매우 작은 값(-inf)으로 초기화합니다.
  • '가장 작은 두 수 × 가장 큰 수'(nums[0] * nums[1] * nums[n-1])과 maxScore를 비교하여 더 큰 값을 저장합니다.
  • '가장 큰 세 수'의 곱(nums[n-3] * nums[n-2] * nums[n-1])과도 비교하여 더 큰 값을 저장합니다.
  • maxScore를 반환합니다.

음수가 두 개 이상 포함된 경우에는 음수 × 음수 = 양수가 되어 오히려 더 큰 곱이 만들어질 수 있습니다. 따라서 '가장 큰 세 양수의 곱'과 '가장 작은 음수 두 개와 가장 큰 양수의 곱'이라는 두 가지 경우를 반드시 모두 고려해야 합니다.

예제 코드

다음 구현을 통해 더 자세히 이해할 수 있습니다.

def solve(nums):
    nums.sort()
    n = len(nums)
    maxScore = -10000
    maxScore = max(maxScore, nums[0] * nums[1] * nums[n - 1])
    maxScore = max(maxScore, nums[n - 3] * nums[n - 2] * nums[n - 1])
    return maxScore

nums = [6, 1, 2, 4, -3, -4]
print(solve(nums))

입력

[6, 1, 2, 4, -3, -4]

출력

72