[LeetCode/Python] 1464. Maximum Product of Two Elements in an Array

minj-j·2023년 8월 13일
0

CodingTest

목록 보기
14/14
post-thumbnail

문제

no.1464 문제링크

풀이 과정

큰 수와 그 다음으로 큰 수를 찾아야 했기에
우선 힙을 반대로 돌리는 과정을 거쳤다 그리고 heappop으로 루트에 있는 수들을 꺼낸 뒤, 그들의 곱을 return 하였다.

풀이 결과

import heapq

class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        heap =[]
        max_heap = []

        for s in nums:
            heapq.heappush(heap, (-s, s))

        while heap:
            max_heap.append(heapq.heappop(heap)[1])
            
        first_max = max_heap[0] - 1
        second_max = max_heap[1] - 1

        return first_max * second_max

다른 사람의 풀이

class Solution(object):
    def maxProduct(self, nums):

        first, second = 0, 0
        
        for number in nums:
            
            if number > first:
                # update first largest and second largest
                first, second = number, first
                
            elif number > second:
                # update second largest
                second = number
        
        return (first - 1) * (second - 1)

큰 수들을 계속해서 갱신시키는 방법으로 풀었다.
나는 heapq 모듈을 사용해보고 싶어 heapq를 주로 사용하였는데,
이런 방법도 있는 것 같다.

profile
minj-j`s Development diary!

0개의 댓글