난이도: 실버 5
https://www.acmicpc.net/problem/10815
10815호: 번호 카드
첫 번째 줄에는 상근이 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 두 번째 줄에는 숫자 카드에 적힌 정수가 포함됩니다. 숫자 카드에 적힌 숫자는 -10,000,000 이상, 10,
www.acmicpc.net
숫자 카드는 정수가 적힌 카드입니다. 상근은 N개의 숫자 카드를 가지고 있습니다. M개의 정수가 주어졌을 때, 상근이 이 숫자가 적힌 숫자 카드를 가지고 있는지 판단하는 프로그램을 작성하세요.
입력
첫 번째 줄에는 상근이 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 두 번째 줄에는 숫자 카드에 적힌 정수가 포함됩니다. 숫자 카드에 적힌 숫자는 -10,000,000보다 크거나 같고 10,000,000보다 작거나 같습니다. 두 개의 숫자 카드에 같은 숫자가 쓰여 있지 않습니다.
세 번째 줄은 M(1 ≤ M ≤ 500,000)입니다. 네 번째 줄에는 상근이 숫자 카드를 가지고 있는지 여부를 판단할 M개의 정수가 주어지며, 이 숫자는 공백으로 구분됩니다. 이 숫자는 -10,000,000보다 크거나 같고 10,000,000보다 작거나 같습니다.
인쇄
첫 번째 줄에 입력된 M 숫자의 경우, 상근에 각 숫자가 적힌 숫자 카드가 있으면 1이 출력되고 없으면 0이 출력됩니다.

설명
#include <iostream>
#include <set>
using namespace std;
int N, M;
set<int> s;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N;
for (int i = 0; i < N; i++)
{
int num;
cin >> num;
s.insert(num);
}
cin >> M;
for (int i = 0; i < M; i++)
{
int num;
cin >> num;
if (s.find(num) != s.end()) // find는 해당 원소를 찾지 못하면 end를 리턴함
cout << 1 << " ";
else
cout << 0 << " ";
}
}