나는 heapq을 이용하여 풀어봤다
우선순위 큐로 자동 정렬의 효과를 기대했는데, 결국 두 개의 힙을 큐를 사용하므로 이중 for문과 비슷한 성능을 보였다.
import heapq
def solution(sizes):
# 큰쪽을 너비, 작은쪽을 높이
# 내림차순, 역순으로 저장
answer = 0
weight_arr = []
height_arr = []
for size in sizes:
heapq.heappush(weight_arr, -max(size))
heapq.heappush(height_arr, -min(size))
w = -heapq.heappop(weight_arr)
h = -heapq.heappop(height_arr)
answer = w*h
return answer
간단하게,
- a와 b 중 더 큰 수를 a로 swap하고
- a, b 각각을 weight, height과 비교하여 더 큰 값을 저장해나가는
방식이 한 번의 for문으로 더욱 간단하고 효율적인 결과가 나왔다.
def solution(sizes):
weight, height = 0, 0
for a, b in sizes:
if a < b:
a, b = b, a # swap
weight = max(weight, a)
height = max(height, b)
return weight * height
+) 아래와 같은 방식도 있지만, 이중 for문으로 돌리게 되므로 두 개의 우선순위 큐를 이용한 방식이랑 비슷하다
def solution(sizes):
# for문 2번
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
'언어' 카테고리의 다른 글
leetcode (1) (1) | 2023.12.15 |
---|---|
'문자열 내 마음대로 정렬하기' (0) | 2023.12.13 |
join on 다중 조건 & cast type 실험 (0) | 2023.12.13 |
list.count(n) (0) | 2023.12.12 |
WITH RECURSIVE (0) | 2023.12.12 |