※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 11968번 문제인 High Card Wins이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/11968
먼저, 주어진 수들을 읽어 입력으로 주어지지 않은
Elsie가 낸 두 카드
위에서 알아낸 내용을 이용하면, Elsie의 카드를 작은 값이 적힌 카드부터 살피며 그보다 큰 수 중 가장 작은 수가 적힌 Bessie의 카드를 대응시키는 greedy한 전략으로 Bessie가 얻을 수 있는 최대 점수를 계산할 수 있음을 증명할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <queue>
using namespace std;
int N;
bool A[100001];
priority_queue<int, vector<int>, greater<>> pq1, pq2;
int ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) {
int x; cin >> x;
A[x] = 1;
}
for (int i = 1; i <= N * 2; i++) {
if (A[i]) pq2.push(i);
else pq1.push(i);
}
while (!pq1.empty()) {
if (pq1.top() > pq2.top()) ans++, pq1.pop(), pq2.pop();
else pq1.pop();
}
cout << ans;
}
'BOJ' 카테고리의 다른 글
[BOJ 14595 // C++] 동방 프로젝트 (Large) (0) | 2024.07.12 |
---|---|
[BOJ 28851 // C++] Протокол <<Судного дня>> (0) | 2024.07.11 |
[BOJ 18866 // C++] 젊은 날의 생이여 (0) | 2024.07.09 |
[BOJ 11626 // C++] Physical Music (0) | 2024.07.08 |
[BOJ 11255 // C++] ITAI Virus (0) | 2024.07.07 |