반응형

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

 

코딩테스트 연습 - 숫자 게임

xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로

programmers.co.kr

 

B가 A보다 최소한으로 큰 경우에만 점수로 인정해줄 것입니다.

먼저 최대 힙에 A와 B의 모든 값을 담아줍니다.

현재 B에 있는 최댓값이 A의 최댓값을 이길 수 있다면, 점수를 가져갑니다.

현재 B에 있는 최댓값이 A의 최댓값을 이길 수 없다면, 그 게임은 그냥 지는 것으로 하고, A의 다음 최댓값과 승부를 봅니다.

B가 담긴 최대 힙에 남아있는 요소의 개수가 패배한 횟수입니다.

 

#include <string>
#include <vector>
#include <queue>
using namespace std;

int solution(vector<int> A, vector<int> B) {
    priority_queue<int> aq, bq;
    for(int i=0; i<A.size(); i++) aq.push(A[i]), bq.push(B[i]);
    while(!aq.empty()) {
        if(bq.top() > aq.top()) bq.pop();
        aq.pop();
    }
    return A.size() - bq.size();
}
반응형

'Algorithm' 카테고리의 다른 글

백준 1158 : 요세푸스 문제  (0) 2021.11.14
프로그래머스 : 스티커 모으기(2)  (0) 2021.11.14
백준 11279 : 최대 힙  (0) 2021.11.14
백준 1927 : 최소 힙  (0) 2021.11.14
백준 20040 : 사이클 게임  (0) 2021.11.14

+ Recent posts