영민 박 2020. 5. 12. 21:20

문제 : https://programmers.co.kr/learn/courses/30/lessons/12987

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

▶ 코드

# 문제: A의 순서를 알고있을때, B의 순서 조작해서 최대한 많이 이겨라.

import heapq

def solution(A, B):
    A.sort(reverse=True) # A를 내림차순 정렬
    
    B = [-i for i in B] # B를 음수화 (최대힙 만들기 위해..)
    heapq.heapify(B) # B를 힙구조로 변환 (B는 최대힙)
    
    c = 0
    for a in A:
        if a >= abs(B[0]): # 음수화된 B에 절대값 씌워서 비교 !
            continue
        else:
            heapq.heappop(B) # B의 원소가 빠져나가도 최대힙 구조를 유지
            c += 1
    print(c)
    return c