Algorithm/백준

[백준] 26069 붙임성 좋은 총총이 with C++

nowkoes 2023. 5. 3. 00:00

문제설명


입출력 예제


개념

 ChongChong과 만난 사람은 무지개 댄스를 추게 되므로, key로 아이디를 갖고 value로 무지개 댄스 여부를 확인할 수 있는 map 자료구조를 사용하면 쉽게 풀 수 있다. 즉, 문자열을 검사해 총총이를 만났으면 value값을 true로 바꾸면 된다.


풀이

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

int main()
{
	int N, count = 0;
	cin >> N;
	map<string, bool> m;
	string str1, str2;

 사람들이 만난 기록의 수 N, 무지개 댄스를 추는 사람의 수 count, 이러한 정보를 기록할 맵 자료구조 m, 사람들의 이름을 초기화할 문자열 str1, str2을 초기화한다.

 

	while (N--)
	{
		cin >> str1 >> str2;

		if (str1 == "ChongChong")
			m.insert({ str1, true });

		else if (str2 == "ChongChong")
			m.insert({ str2, true });

		if (m[str1])
			m[str2] = true;

		if (m[str2])
			m[str1] = true;
	}

 문자열 두 개를 입력받고, ChongChong이를 만났을 때 맵에 값을 삽입한다. 그리고 다른 사람의 bool 값을 true로 바꿔주면 된다.

 

	for (auto& val : m)
	{
		if (val.second)
			count++;
	}

	cout << count;
}

 맵에 있는 자료들 중 value값이 true인 경우에 count를 늘리면 된다.

 

총합본

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

int main()
{
	int N, count = 0;
	cin >> N;
	map<string, bool> m;
	string str1, str2;

	while (N--)
	{
		cin >> str1 >> str2;

		if (str1 == "ChongChong")
			m.insert({ str1, true });

		else if (str2 == "ChongChong")
			m.insert({ str2, true });

		if (m[str1])
			m[str2] = true;

		if (m[str2])
			m[str1] = true;
	}

	for (auto& val : m)
	{
		if (val.second)
			count++;
	}

	cout << count;
}
반응형