[leetcode] Maximum Product of Two Elements in an Array

김민서·2024년 1월 6일
0

알고리즘 문제풀이

목록 보기
12/47
  1. Maximum Product of Two Elements in an Array
    링크텍스트

배열 중 가장 큰 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))

0개의 댓글