본문 바로가기
문제 풀이/백준(BOJ)

[C++] 백준 10816번 : 숫자 카드 2

by 희조당 2021. 8. 5.
728x90

https://www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net


 문제 풀이

숫자 카드의 개수를 구하는 문제이다.

map을 구현하면 아주 쉽게 풀 수 있다.

 느낀 점

다른 분들은 lower bound와 upper bound로 풀었다. C++ STL에서 지원하기 때문에 아주 쉽게 풀 수도 있다. 나는 보자마자 생각난 게 map이어서 그냥 map으로 풀었다!

 코드

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

int N, M, tmp;
map<int, int> m;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin >> N;
	
	for (int i = 0; i < N; i++) {
		cin >> tmp;
		if (m.count(tmp)) m.find(tmp)->second++;
		else m.insert(make_pair(tmp,1));
	}

	cin >> M;
	for (int i = 0; i < M;i++) {
		cin >> tmp;
		if (m.count(tmp)) {
			cout << m.find(tmp)->second << "\n";
		}
		else cout << 0 << "\n";
	}
}

댓글