숫자 배열을 입력해서 저장한 후에 다시 임의의 숫자를 입력해서 숫자가 저장된 배열에 존재하면 1, 존재하지 않으면 0을 출력하는 문제이다.
map<int, bool> myMap을 선언하고 input으로 받아온 것을 바로 myMap의 key로 넣고 동시에 value를 true로 선언한다.
map에서는 key의 중복을 허용하지 않기 때문에 단 하나의 key만 존재할 것이고 true는 1로 출력이 되기 때문에 true를 value로 넣어준다.
그렇게 해서 myMap[input]을 출력하면, 아까 입력한 key가 인덱스로 존재하면 value로 저장했던 1이 출력이 될 것이고, 그렇지 않다면 myMap에 input을 key로 하며 디폴트로 false를 value로 가지는 pair가 삽입되며 동시에 출력이 될 것이다.
#include <iostream>
#include <map>
using namespace std;
int main(int argc, char* argv[])
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, m;
cin >> n;
map<int, bool> myMap;
int input;
for (int i = 0; i < n; i++)
{
cin >> input;
myMap[input] = true;
}
cin >> m;
for (int i = 0; i < m; i++)
{
cin >> input;
cout << myMap[input] << '\n';
}
return 0;
}