[백준/C++] 1920번 : 수 찾기

Eunho Bae·2022년 3월 4일
0

백준

목록 보기
3/40

문제링크


아이디어

숫자 배열을 입력해서 저장한 후에 다시 임의의 숫자를 입력해서 숫자가 저장된 배열에 존재하면 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가 삽입되며 동시에 출력이 될 것이다.


후기

  • 개행을 할때는 endl 대신 \n을 사용하자
  • myMap.at(input)을 사용하면 대괄호와는 달리 범위검사를 하기 때문에 out_of_range

제출코드

#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;
}
profile
개인 공부 정리

0개의 댓글