배열 중 가장 큰 2개의 숫자를 골라 각각 1을 뺀 값을 반환
(nums[i]-1)*(nums[j]-1)
파이썬의 heapq를 사용한다.
파이썬에서의 힙은 최소힙이기 때문에 이에 -1를 곱해서 최대힙처럼 사용한다.
import heapq import heapify
nums = [1,5,4,5]
nums = [i * -1 for i in nums] # 각각 요소에 -1을 곱해줌(최대힙으로 사용하기 위함)
heapify(nums) # 힙으로 변환
biggest = (-1 * heappop(nums))
second_biggest = (-1 * heappop(nums))
print((biggest - 1) * (second_biggest - 1))
from heapq import heappush, heappop
nums = [1,5,4,5]
heap = []
for i in nums:
heappush(heap, (-i, i)) # (우선순위, 값) 첫번째 요소에 있는 값 기준으로 오름차순 정렬된다.
# [(-5, 5), (-5, 5), (-4, 4), (-1, 1)]
biggest = heappop(heap)[1]
second_biggest = heappop(heap)[1]
print((biggest - 1) * (second_biggest - 1))