
01. ๐ ๋ฌธ์ ํ์
N: ์๊ทผ์ด๊ฐ ๊ฐ์ง ์ซ์ ์นด๋์ ๊ฐ์ (์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ ํฌ๊ธฐ)
M: ์ค๋ณต๋ ์นด๋๊ฐ ์๋ ์ง ํ์ธํ๊ธฐ ์ํ ์ซ์ ์นด๋์ ๊ฐ์ (์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ ํฌ๊ธฐ)
์ฆ, N๊ฐ์ ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ M๊ฐ์ ๋ฐฐ์ด์ ๋ด๊ธด ์ ์๊ฐ ํฌํจ๋์ด ์๋ ์ง ์๋ ์ง๋ฅผ ๊ตฌํ์ฌ ์ถ๋ ฅํ๋ ๋ฌธ์
* ๊ฐ ๋ฐฐ์ด์ ์ต๋ ํฌ๊ธฐ๋ 500,000
* ์ ์์ ๋ฒ์๋ -10,000,000 ~ 10,000,000
01-1. ๊ฐ๋ฅํ ์๊ฐ ๋ณต์ก๋
M๊ฐ์ ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋ฐ๋์ ์ฐจ๋ก๋๋ก ํ ๋ฒ์ฉ ํ์ํ์ฌ ์ค๋ณต์ธ์ง ์๋์ง ์ถ๋ ฅํ์ฌ์ผ ํ๋ฏ๋ก, ์๊ฐ๋ณต์ก๋๊ฐ O(M) ์ด์์ผ๋ก ๋์ค๊ฒ ๋๋ค.
์๊ฐ ์ ํ์ด 2์ด๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(M) * x ์ผ ๋, ์ฐ์ฐ ํ์๋ 2e8(2์ต)ํ ๋ฏธ๋ง์ด ๋์ด์ผ ํ๋ค.
์์ ํ์์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ O(MN)์ผ๋ก, ์ต์
์ ๊ฒฝ์ฐ 25e10ํ๋ก ์๊ตฌ๋๋ ์ต๋ ์ฐ์ฐ ํ์๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ค.
์ด๋ถ ํ์์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ O(MlogN)์ผ๋ก, ์ต์
์ ๊ฒฝ์ฐ์๋ 1e7 ๋ฏธ๋ง์ด๋ค.
๋ฐ๋ผ์, ์ต์ํ ํ ๋ฒ์ ํ์์์ ์๊ฐ๋ณต์ก๋๊ฐ O(logN) ์ดํ๊ฐ ๋์ด์ผ ํจ์ ์ ์ ์๋ค.
01-2. ์๊ณ ๋ฆฌ์ฆ ์ ํ
- ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๊ณผ ์๊ฐ๋ณต์ก๋๊ฐ O(logN) ์ธ ํ์์ ํ ์ ์๋ C++์์ ์ ๊ณตํ๋ STL์ธ Map์ผ๋ก ํ์ด
02. ๐ ์ฝ๋ ์ค๊ณํ๊ธฐ
- N์ ๋ํ Input์ ๋ฐ์ ์์๋ฅผ Map์ ์ฝ์
- M์ ๋ํ Input์ ๋ฐ์ Map์ ํด๋น ์์๊ฐ ์๋ ์ง ํ์
03. ๐ ๏ธ ์๋๋ณ ์์
1ํ์ฐจ
- C/C++ ํ์ค stream ๋๊ธฐํ ๋นํ์ฑํ๋ฅผ ์์ --> ์ ์ถ๋ ฅ ์๊ฐ ๋จ์ถ์ ์ํด ์ถ๊ฐ
2ํ์ฐจ
04. ๐๏ธ ์ ๋ต ์ฝ๋
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int N, M;
map<int, bool> cards;
cin >> N;
while(N--){
int num;
cin >> num;
cards[num] = 1;
}
cin >> M;
while(M--){
int num;
cin >> num;
cout << cards[num] << " ";
}
return 0;
}
'Problem Solving > Baekjoon Online Judge (BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [C++] BOJ 1806 - ๋ถ๋ถํฉ (0) | 2025.04.10 |
|---|---|
| [C++] BOJ 8895 - ๋ง๋ ๋ฐฐ์น (0) | 2025.04.10 |
| [C++] BOJ 1562 - ๊ณ๋จ ์ (0) | 2025.04.09 |
| [C++] BOJ 2342 - Dance Dance Revolution (0) | 2025.04.08 |
| [C++] BOJ 10422 - ๊ดํธ (1) | 2025.04.07 |
์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์!