[Week 8] MATCHORDER self review - hanjuuuuuu
Closed this issue · 0 comments
hanjuuuuuu commented
MATCHORDER self review
- 파일명: MATCHORDER/hanjuuuuuu.cpp
- 수행시간: 4ms
1. 문제 해결 과정
상대방 레이팅과 비교해 우리팀 레이팅 중 큰 값이 없으면 우리팀에서 제일 작은 레이팅을 매칭시킵니다. 큰 값이 있다면 작은 차이로 이길 수 있는 레이팅 값을 매칭시켜 이길 수 있는 수를 세면 최대 승을 구할 수 있다고 생각했습니다.
2. 아이디어
먼저 레이팅이 있는 배열을 오름차순으로 정렬하고, 인덱스를 증가시키면서 비교하니 더욱 쉽게 구현할 수 있었습니다.
3. 코드 설명
#include<iostream>
#include<algorithm>
using namespace std;
int N;
int rus_r[100], kor_r[100]; //팀별 레이팅
int order(int* russia,int* korea) {
int index_r = 0;
int index_k = 0;
while(index_k < N){
//우리팀 레이팅이 크거나 같으면 인덱스 함께 증가(매칭)
if (russia[index_r] <= korea[index_k]){
index_r += 1;
index_k += 1;
}
//그렇지 않으면, 우리팀 다음 인덱스와 비교
//즉, 작은 레이팅을 상대팀 제일 큰 레이팅과 비교하게 만듦
else{
index_k += 1;
}
}
//이길 수 있는 사람의 수가 최대 승의 값
return index_r;
}
int main() {
int C;
cin >> C;
while (C--) {
cin >> N;
for(int i = 0; i < N; i++) {
cin >> rus_r[i];
}
for (int j = 0; j < N; j++) {
cin >> kor_r[j];
}
sort(rus_r, rus_r + N);
sort(kor_r, kor_r + N);
cout << order(rus_r, kor_r) << endl;
}
return 0;
}