프로그래밍/코딩테스트 문제풀이
[Python] 프로그래머스. 숫자 게임 (Level 3)
inspirit941
2019. 10. 26. 17:21
반응형
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
반응형