View

반응형

 

알고리즘 분류: 자료 구조, 문자열, 정렬, 해시를 사용한 집합과 맵

문제 링크: https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

 

 

【 풀이 】

 

반복자를 생성하고 map의 멤버 함수 중 하나인 find로 key 값을 저장한다.

map.find(key)는 찾고자 하는 값이 없으면 map.end()를 반환하기 때문에, 이를 이용해 개수와 key의 value를 1씩 증가시킨다.

그 후 map을 순회하면서, value값이 1인 key를 출력해 주면 된다.

 

 

 

【 코드 】

 

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

int main(void)
{
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base::sync_with_stdio(false);

	map<string, int>hear;
	map<string, int>::iterator it;
	string id;

	int cnt = 0;
	int n, m;
	cin >> n >> m;

	for (int i = 1; i <= n; i++)
	{
		cin >> id;
		hear.insert(make_pair(id, 0));
	}
	for (int i = 1; i <= m; i++)
	{
		cin >> id;
		it = hear.find(id);
		if (it != hear.end())
		{
			cnt++;
			hear[id]++;
		}
	}
	cout << cnt<<'\n';
	auto iter = hear.begin();
	while (iter != hear.end())
	{
		if (iter->second == 1)
			cout << iter->first << '\n';
		++iter;
	}

	return 0;
}

 

728x90
반응형
Share Link
reply
250x250
반응형
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31