백준 - 7795번 : 먹을 것인가 먹힐 것인가 (C++)

RoundAbout·2024년 5월 3일
0

BaekJoon

목록 보기
65/90

풀이 방법 : 정렬

A의 요소가 B의 요소보다 큰 쌍의 수를 출력해주면 되는 문제다.
주어지는 A와 B를 둘 다 오름차순으로 정렬 해주고 비교한다 치면, 만약 A[i]가 B[j]보다 크다고 한다면 당연하게도 A[i+1] 또한 B[j] 보다는 크다는 얘기이므로 쌍의 갯수를 누적해가면서 구해줄 수 있다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	cin.tie(nullptr);
	cout.tie(nullptr);
	ios::sync_with_stdio(false);

	int T;
	cin >> T;

	while (T > 0)
	{
		--T;

		int ACnt, BCnt;
		cin >> ACnt >> BCnt;

		vector<int> vecA(ACnt);
		vector<int> vecB(BCnt);

		for (int i = 0; i < ACnt; ++i)
		{
			cin >> vecA[i];
		}

		for (int i = 0; i < BCnt; ++i)
		{
			cin >> vecB[i];
		}

		sort(vecA.begin(), vecA.end());
		sort(vecB.begin(), vecB.end());

		int Answer = 0;
		int Idx = 0;
		int Cnt = 0;

		for (int i = 0; i < ACnt; ++i)
		{
			for (int j = Idx; j < BCnt; ++j)
			{
				if (vecA[i] <= vecB[j])
					break;

				++Idx;
				++Cnt;
			}

			Answer += Cnt;
		}

		cout << Answer << '\n';
	}
}

profile
게임하고 피자 좋아함

0개의 댓글

관련 채용 정보