티스토리 뷰
문제 링크
https://algospot.com/judge/problem/read/MATCHORDER
algospot.com :: MATCHORDER
출전 순서 정하기 문제 정보 문제 전세계 최대의 프로그래밍 대회 알고스팟 컵의 결승전이 이틀 앞으로 다가왔습니다. 각 팀은 n명씩의 프로 코더들로 구성되어 있으며, 결승전에서는 각 선수가
algospot.com
상대방을 이길 수 있는 한국선수가 있다면 그 중 레이팅이 가장 낮은 선수를 선택해야 합니다.
무조건 상대방보다 레이팅이 높다고 해당 선수를 배치하게되면 이후에 레이팅이 낮은 선수들만 남아 경기에 질 확률이 더 크기 때문입니다.
마찬가지로 상대선수를 이길 수 있는 한국선수가 없다면 선수 중 가장 낮은 선수를 선택해야 합니다.
우리 팀에서 가장 높은 레이팅으로도 이길 수 없다면 가장 레이팅이 낮은 선수를 사용해 레이팅이 높은 선수를 아껴둘 수 있기 때문입니다.

이 방식을 위 예시에 적용해보면
가장먼저 한국선수 중 레이팅이 가장 높은 선수와 첫 번째 러시아 선수와 비교해봅니다.
해당 러시아 선수가 한국에서 가장 레이팅이 높은 선수보다 레이팅이 높기 때문에 한국에서 가장 레이팅이 낮은 점수인 18과 30을 매칭시킵니다.

다음 러시아 선수와 가장 레이팅이 높은 한국선수를 비교했을 때 한국선수가 더 높기 때문에
해당 러시아 선수와 이길 수 있는 가장 낮은 점수인 27을 매칭시켜줍니다.
이러한 방식으로 모든 러시아 선수를 비교해 나가면 최대 승수를 구할 수 있습니다.
구현 코드
#include <iostream> | |
#include <set> | |
#define endl '\n' | |
#define fastio cin.sync_with_stdio(false); cin.tie(nullptr) | |
using namespace std; | |
int russian[100]; | |
int korean[100]; | |
int n; | |
int order(){ | |
int wins = 0; | |
//한국 선수를 오름차순으로 정렬시킨다. | |
multiset<int> ratings(korean, korean+n); | |
for(int rus=0;rus<n;++rus){ | |
//가장 레이팅이 높은 한국 선수가 이길 수 없는 경우 | |
//가장 레이팅이 낮은 한국 선수를 매칭시킨다. | |
if(*ratings.rbegin() < russian[rus]) | |
ratings.erase(ratings.begin()); | |
//해당 러시아 선수를 이길 수 있는 선수 중 가장 레이팅이 낮은 선수를 매칭시킨다. | |
else{ | |
ratings.erase(ratings.lower_bound(russian[rus])); | |
++wins; | |
} | |
} | |
return wins; | |
} | |
int main(){ | |
fastio; | |
int _; | |
cin >> _; | |
while(_--){ | |
cin >> n; | |
for(int i=0;i<n;i++) | |
cin >> russian[i]; | |
for(int i=0;i<n;i++) | |
cin >> korean[i]; | |
cout << order() << endl; | |
} | |
return 0; | |
} |
'Coding Test > 알고스팟' 카테고리의 다른 글
[C++] 알고스팟/탐욕법 - 문자열 합치기 (0) | 2020.08.31 |
---|---|
[C++] 알고스팟/탐욕법 - Microwaving Lunch Boxes (0) | 2020.08.28 |
[C++] 알고스팟/동적계획법 - 두니발 박사의 탈옥 (0) | 2020.08.26 |
[C++] 알고스팟/동적계획법 - 폴리오미노 (0) | 2020.08.25 |
[C++] 알고스팟/동적계획법 - 달팽이 (0) | 2020.08.24 |
- Total
- Today
- Yesterday
- 삼각형 위의 최대 경로
- 스파크
- import
- Hadoop
- 종만북
- 출전 순서 정하기
- HDFS
- C++
- HiveQL
- 하이브
- python
- Django
- 팰린드롬 구하기
- 백준
- 코딩인터뷰 완전분석
- Sqoop
- 두니발 박사의 탈옥
- 알고스팟
- 분할정복
- 삼각형 위의 최대 경로 수 세기
- Jaeha's Safe
- hive
- microwaving lunch boxes
- 외발 뛰기
- 합친 lis
- 2225
- 하둡
- 완전탐색
- pyspark
- 배열과 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |