문제링크
적은 범위였다면 배열의 인덱스로 쉽게 구현할 수 있지만
정수의 범위가 int이며 개수도 1,000,000개나 되기 때문에 시간초과를 주의해야 하는 문제
해쉬테이블 unordered_map을 사용하여 key, value 쌍으로 값을 저장하고 탐색할 수 있게 사용한다.
단 이것만 가지고는 시간초과가 나기 때문에
ios_base::sync_with_stdio(false);를 통해 C 표준의 동기화를 끊고,
cin.tie(NULL), cout.tie(NULL) 따위로 내부적으로 수행되는 연산을 줄여 시간을 확보한다.
제출코드
#include <iostream>
#include <unordered_map>
using namespace std;
int T, N, M;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> T;
for (int i = 0; i < T; i++)
{
cin >> N;
unordered_map<int, bool> Map;
for (int j = 0; j < N; j++)
{
int idx = 0;
cin >> idx;
Map[idx] = true;
}
cin >> M;
for (int k = 0; k < M; k++)
{
int idx = 0;
cin >> idx;
if (Map[idx] == 1)
{
cout << 1 << "\n";
}
else
{
cout << 0 << "\n";
}
}
}
return 0;
}
'알고리즘 > 백준풀이' 카테고리의 다른 글
[백준/C++] 1927번 최소 힙 (0) | 2024.11.13 |
---|---|
[백준/C++] 11279번 최대 힙 (2) | 2024.11.02 |
[백준/C++] 1966번 프린터 큐 (1) | 2024.10.26 |
[백준/C++] 2164번 카드2 (0) | 2024.10.26 |
[백준/C++] 2161번 카드1 (0) | 2024.10.26 |