반응형
1. A팀의 최댓값이 B팀의 최댓값보다 크다 = B가 무엇을 내놓아도 이길 수 없다. 포기한다.
2. A팀의 최댓값보다 B팀의 최댓값이 크다 = 이길 수 있다.
A팀을 최댓값 -> 최솟값 순서로 정렬하고, B의 최댓값을 빠르게 구할 수 있도록 heapq 라이브러리를 사용한다.
import heapq
def solution(A, B):
# A의 최솟값이 B의 최댓값보다 크면, 이길 방법이 없으므로 0
if min(A) > max(B):
return 0
# 최댓값 -> 최솟값 순으로 정렬
A.sort(reverse = True)
# 맨 앞에 B의 최댓값이 위치하도록 heapq 자료구조를 사용한다.
B = [-i for i in B]
heapq.heapify(B)
count = 0
for a in A:
# 이길 수 없는 경우. 그냥 넘어간다.
if a >= abs(B[0]):
continue
else:
# 이길 수 있는 경우. B의 최댓값을 꺼내고 count를 증가시킨다.
heapq.heappop(B)
count += 1
return count
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스. 가장 먼 노드 (Level 3) (0) | 2019.10.30 |
---|---|
[Python] 백준 17142. 연구소 3 (0) | 2019.10.29 |
[Python] 프로그래머스. 2018 카카오 Recruit - 추석 트래픽 (0) | 2019.10.28 |
[Python] 백준 17298. 오큰수 (0) | 2019.10.27 |
[Python] 백준 1766. 문제집 (0) | 2019.10.25 |