Queue-ri/Advanced-Algorithm-Study

[Week 8] MATCHORDER self review - hanjuuuuuu

Closed this issue · 0 comments

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;
}