https://www.acmicpc.net/problem/7795
๋ฌธ์
์ฌํด์๋ ๋ ์ข ๋ฅ์ ์๋ช ์ฒด A์ B๊ฐ ์กด์ฌํ๋ค. A๋ B๋ฅผ ๋จน๋๋ค. A๋ ์๊ธฐ๋ณด๋ค ํฌ๊ธฐ๊ฐ ์์ ๋จน์ด๋ง ๋จน์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, A์ ํฌ๊ธฐ๊ฐ {8, 1, 7, 3, 1}์ด๊ณ , B์ ํฌ๊ธฐ๊ฐ {3, 6, 1}์ธ ๊ฒฝ์ฐ์ A๊ฐ B๋ฅผ ๋จน์ ์ ์๋ ์์ ๊ฐ์๋ 7๊ฐ์ง๊ฐ ์๋ค. 8-3, 8-6, 8-1, 7-3, 7-6, 7-1, 3-1.
๋ ์๋ช ์ฒด A์ B์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ก์ ๋, A์ ํฌ๊ธฐ๊ฐ B๋ณด๋ค ํฐ ์์ด ๋ช ๊ฐ๋ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ A์ ์ N๊ณผ B์ ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ A์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ฃผ์ด์ง๋ฉฐ, ์ ์งธ ์ค์๋ B์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ฃผ์ด์ง๋ค. ํฌ๊ธฐ๋ ์์ ์ ์์ด๋ค. (1 ≤ N, M ≤ 20,000)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, A๊ฐ B๋ณด๋ค ํฐ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
ํฌํฌ์ธํฐ๋ฅผ ์ด์ฉํ์
a์ b์ ๊ฐ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ๊ณ
์กฐ๊ฑด์ ๋ง๋ ์์ ์นด์ดํธํ ์ ์๋๋ก ๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ค์ฌ๋๊ฐ๋ฉด ๋๋ค.
๊ธ๋ณด๋ค๋ ์ฝ๋๋ก ๋ณด๋๊ฒ ์ดํด๊ฐ ์ฝ๋ค
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
// ์
๋ ฅ
int n,m;
cin >> n >> m;
vector<int>a(n);
vector<int>b(m);
for(int i=0; i<n; i++) {
cin >> a[i];
}
for(int i=0; i<m; i++) {
cin >> b[i];
}
// ํ์ด
sort(a.begin(), a.end());
sort(b.begin(), b.end());
int indexA = n-1;
int indexB = m-1;
int ans = 0;
while(indexA>=0 && indexB>=0) {
while(a[indexA] <= b[indexB]) {
indexB--;
}
ans += indexB+1;
indexA--;
}
// ์ถ๋ ฅ
cout << ans << "\n";
}
return 0;
}
'๐๏ธ ICPC Sinchon > Two Pointer' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 15565๋ฒ: ๊ท์ฌ์ด ๋ผ์ด์ธ (0) | 2024.08.29 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1806๋ฒ: ๋ถ๋ถํฉ (0) | 2024.08.28 |
[BOJ][C++] ๋ฐฑ์ค 2467๋ฒ: ์ฉ์ก (0) | 2024.08.18 |
[BOJ][C++] ๋ฐฑ์ค 2003๋ฒ: ์๋ค์ ํฉ 2 (0) | 2023.07.27 |
[BOJ S1][C++] ๋ฐฑ์ค 2531๋ฒ: ํ์ ์ด๋ฐฅ (0) | 2022.10.20 |