본문 바로가기

PS

[PS] (백준 10815번) 숫자카드 C++ map

전체 코드는 가장 하단에 있습니다 ~

 

전에 한 번 풀었던 문제던데 기억이 x

코드 보니까 이분 탐색으로 풀었던데 동아리에서 배운 STL Map 사용해서 다시 풀어봤다

 

파이썬 딕셔너리와 동일한 개념으로,

Key 와 Value 를 저장하고 값을 쉽게 찾을 수 있는 자료구조로 이해했다

 

size, find, erase, begin, end 등등 ...

많이 본 함수들도 사용 가능하

 

Map .find()

키 값에 대한 벨류를 찾을 때 쓴다

없다면 map.end() 를 반환한다는 부분을 생각해서 문제 조건에 맞게 조건문을 설정해줬다

 

make_pair

두 원소를 묶은 pair 를 만든다

first : 첫 번째 인자를 반환

second : 두 번째 인자를 반환

 

 

전체 코드

#include <iostream>
#include <map>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(nullptr);
	map<int, int> m;

	int N, M;
	int input;
	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> input;
		m.insert(make_pair(input, 1));
	}

	cin >> M;
	for (int i = 0; i < M; i++) {
		cin >> input;
		if (m.find(input) != m.end()) {
			cout << m.find(input)->second << " ";
		}
		else {
			cout << "0 ";
		}
	}
}