ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ
๋ ๊ฐ์ ์ผ์ฐจ์ ๋ฐฐ์ด์ด ์๊ณ , ๊ทธ ๋ฐฐ์ด์ ์๋ก ๋น๊ตํด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ ๋ค๊ณ ํฉ์๋ค.
๊ฐ ์๋ฅผ ํ๋ํ๋ ๋น๊ตํด์ ๋ฐฐ์ด์ ๋ง๋ค๋ฉด, ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ N, M์ด๋ผ๊ณ ํ ๋ ์๊ฐ ๋ณต์ก๋๋ N*M
์ด ๋ฉ๋๋ค.
์ด๋ฌํ ํฐ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ด๊ธฐ ์ํด, ๊ฐ ๋ฐฐ์ด์ ํ๋์ฉ ๋ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ง์ ํฉ๋๋ค.
์ด ํฌ์ธํฐ๋ค์ ์ํฉ์ ๋ง๊ฒ ์์ง์ด๋ฉด์ ์์ ์๊ฐ ๋ณต์ก๋๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
๋ฌธ์
๋ํ ๋ฌธ์ ๋ฅผ ์ดํด๋ด
์๋ค.
๋ฌธ์ : BOJ_1822๋ฒ ์ฐจ์งํฉ
๋ ๊ฐ์ 1์ฐจ์ ๋ฐฐ์ด์ด ์๊ณ , ๋ฐฐ์ด์ ์ต๋ ํฌ๊ธฐ๋ 500,000์
๋๋ค.
์ด๋ ๋ ๋ฐฐ์ด์ ์ฐจ์งํฉ์ ๋ง๋๋ ๊ฒ์ด ๋ฌธ์ ์
๋๋ค.
์๋ก์ ๋ฐฐ์ด ๊ฐ์ ๋จ์ํ๊ฒ ํ๋ํ๋ ๋น๊ตํ๋ฉด ์๊ฐ ๋ณต์ก๋๊ฐ ์ปค์ง๋๋ค.
์ด๋ ํฌํฌ์ธํฐ๋ฅผ ํ์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ผ๋จ ๋ ๋ฐฐ์ด์ด ํฌ๊ธฐ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ง ์์ผ๋ฏ๋ก ๊ฐ๊ฐ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด 1์ ํฌ์ธํฐ ptr1, ๋ฐฐ์ด 2์ ํฌ์ธํฐ ptr2๋ฅผ ์ ์ธํ๊ณ ๊ทธ ๊ฐ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ก ํ ๋นํฉ๋๋ค.
๊ฐ ํฌ์ธํฐ์ ๊ฐ์ ์ธ๋ฑ์ค๋ก ํ์ฌ ์๋ก์ ๋ฐฐ์ด ๊ฐ์ ๋น๊ตํด ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋น๊ตํฉ๋๋ค.
- ๋ฐฐ์ด 1๊ณผ ๋ฐฐ์ด 2์ ๊ฐ์ด ์๋ก ๊ฐ๋ค๋ฉด, ์๋ก์ ํฌ์ธํฐ ๊ฐ์ ์ฌ๋ ค์ฃผ๊ณ ๋์ด๊ฐ๋๋ค.
- ๋ฐฐ์ด 1์ ๊ฐ์ด ๋ฐฐ์ด 2์ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด, ์ฐจ์งํฉ์ ๊ธฐ์ค์ ๋ฐฐ์ด 1์ด๋ฏ๋ก ๋ฐฐ์ด 1์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๊ณ ๋ฐฐ์ด 1์ ํฌ์ธํฐ ๊ฐ์ ์ฌ๋ ค์ค๋๋ค.
- ๋ฐฐ์ด 2์ ๊ฐ์ด ๋ฐฐ์ด 1์ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด, ๋ฐฐ์ด 2์ ํฌ์ธํฐ ๊ฐ์ ์ฌ๋ ค์ฃผ๊ณ ๋์ด๊ฐ๋๋ค.
- ์ด๋ฐ ํฌํฌ์ธํฐ ๋ฐฉ์์ผ๋ก ๋น๊ต๊ฐ ๊ฐ๋ฅํ ์ด์ ๋ ๋ ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ด ์์ค
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void) {
int nA, nB;
cin >> nA >> nB;
vector<int> v1(nA);
vector<int> v2(nB);
for (int i = 0; i < nA; i++) cin >> v1[i];
sort(v1.begin(), v1.end());
for (int i = 0; i < nB; i++) cin >> v2[i];
sort(v2.begin(), v2.end());
int ptr1, ptr2;
ptr1 = ptr2 = 0;
vector<int> result;
while (ptr1 < nA && ptr2 < nB) {
if (v1[ptr1] == v2[ptr2]) {
ptr1++;
ptr2++;
}
else if (v1[ptr1] > v2[ptr2]) ptr2++;
else {
result.push_back(v1[ptr1]);
ptr1++;
}
}
while (ptr1 < nA) {
result.push_back(v1[ptr1]);
ptr1++;
}
cout << result.size() << '\n';
for (int i : result) {
cout << i << ' ';
}
cout << '\n';
return 0;
}
- vector๋ก ๋ฐฐ์ด 1, ๋ฐฐ์ด 2๋ฅผ ๋์ ํ ๋นํ๊ณ , ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๊ฐ์ด ๋ค์ด์ฌ ๋๋ง๋ค push_back ํด์ฃผ์์ต๋๋ค.
- sort ํจ์๋ฅผ ์ด์ฉํด ๋ฐฐ์ด 1๊ณผ ๋ฐฐ์ด 2๋ฅผ ์ค๋ฆ์ฐจ์ ์์ผ๋ก ์ ๋ ฌํ์ต๋๋ค.
์๊ฐ ๋ณต์ก๋
๊ธฐ์กด์ ๋จ์ํ 2์ค for ๋ฌธ์ ๊ฒฝ์ฐ์ ์ต์
์ ๊ฒฝ์ฐ์ N*M
์ด ๋์ต๋๋ค.
ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ํฌ์ธํฐ๋ฅผ ํ๋ํ๋ ์ฆ๊ฐ์ํค๋ฉฐ ๋น๊ตํ๋ฏ๋ก N+M
๋ง์ ํด๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
'Algorithm > ์ด๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] lower_bound, upper_bound (0) | 2022.03.14 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์ด์ง ํธ๋ฆฌ ํ์ (0) | 2022.03.10 |
์ ํ, ๋ฒ๋ธ, ์ฝ์ ์ ๋ ฌ (0) | 2022.03.09 |
[์๊ณ ๋ฆฌ์ฆ] 8์ ๊ฐ์ ๊ตฌํ๊ธฐ (1~10์ต) (0) | 2022.03.09 |
Trie(ํธ๋ผ์ด) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.03.08 |