solution 1 : 배열 이용 → 시간 초과
def solution(A, B):
A = sorted(A, reverse=True)
B = sorted(B, reverse=True)
score = 0
i, j = 0, 0
while i < len(A):
if A[i] < B[i]:
score += 1
i += 1
j += 1
else:
i += 1
return score
solution 2 : 힙 이용
최대 힙 : heapq.heappush(heap, (-n, n)) --> -n : 우선순위
import heapq
def solution(A, B):
heapA = []
heapB = []
for i in range(len(A)):
heapq.heappush(heapA, (-A[i], A[i]))
heapq.heappush(heapB, (-B[i], B[i]))
print(heapA[0][0])
score = 0
for i in range(len(A)):
if heapA[0][1] < heapB[0][1]:
score += 1
heapq.heappop(heapA)
heapq.heappop(heapB)
else:
heapq.heappop(heapA)
return score
문제 출처 programmers.co.kr/learn/courses/30/lessons/12987
'알고리즘 > 구현' 카테고리의 다른 글
파이썬 | 백준 | 2217 | 로프 (0) | 2020.11.09 |
---|---|
파이썬 | 백준 | 17822 | 원판 돌리기 (0) | 2020.11.07 |
파이썬 | 백준 | 1063 | 킹 (0) | 2020.11.04 |
파이썬 | 프로그래머스 | 방문 길이 (0) | 2020.11.01 |
파이썬 | 프로그래머스 | 소수 만들기 (0) | 2020.10.29 |