문제
N개의 정수 배열이 주어지고, M개의 수들이 주어진다.
이 수들이 N개 안에 존재하면 1, 존재하지 않으면 0출력
생각할 것
unordered_map은 탐색에 O(1)의 시간복잡도가 소요되므로 unoredered_map으로 찾아보려한다.
배열 인덱스를 사용함과 다르게 key값으로 정수 범위를 넣어도 된다.
코드
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, M, n;
cin >> N;
unordered_map<int, bool> m;
for (int i = 0; i < N; i++) {
cin >> n;
m[n] = true;
}
cin >> M;
for (int i = 0; i < M; i++) {
cin >> n;
cout << m[n] << "\\n";
}
return 0;
}
반응형
'Problem solving > BOJ' 카테고리의 다른 글
[BOJ] 2468. 안전 영역 (C++) (0) | 2023.08.23 |
---|---|
[BOJ] 7785. 회사에 있는 사람 (C++) (0) | 2023.08.11 |
[BOJ] 2230. 수 고르기 (C++) (0) | 2023.08.11 |
[BOJ] 2493. 탑 (C++) (0) | 2023.08.11 |