[210429][백준/BOJ] 7795번 먹을 것인가 먹힐 것인가

KeonWoo Kim·2021년 4월 29일
0

알고리즘

목록 보기
57/84

문제

입출력

풀이

입력받은 v1, v2배열을 내림차순으로 정렬을 한다.
내림차순은 큰 수부터 비교를 하므로 v1의 인덱스가 v2의 인덱스보다 크다면 v2 나머지 인덱스는 다 v1의 인덱스보다 작으므로 더이상 비교하지 않아도 된다.

코드

#include <bits/stdc++.h>
using namespace std;

bool cmp(int& a, int& b)
{
	return a > b;
}
int main()
{
	int t;
	cin >> t;

	while (t--)
	{
		int n, m, num, ans = 0;
		vector<int> v1, v2;
		cin >> n >> m;
		for (int i = 0; i < n; ++i)
		{
			cin >> num;
			v1.push_back(num);
		}
		for (int i = 0; i < m; ++i)
		{
			cin >> num;
			v2.push_back(num);
		}
		sort(v1.begin(), v1.end(), cmp);
		sort(v2.begin(), v2.end(), cmp);

		for (int i = 0; i < n; ++i)
		{
			for (int j = 0; j < m; ++j)
			{
				if (v1[i] > v2[j])
				{
					// 내림차순으로 정렬이 되어있으므로 
					// v1[i]값이 v2[j]보다 크다면 j부터 m까지의 값은 다 작으므로 비교 할 필요 x
					ans += m - j; 
					break;
				}
			}
		}
		cout << ans << '\n';
	}
}
profile
안녕하세요

0개의 댓글

관련 채용 정보