본문 바로가기
코딩테스트 준비/백준

[백준/BOJ][C++] 26069번 붙임성 좋은 총총이

by 스테디코디스트 2023. 9. 5.
반응형

<문제 소개>


<소스 코드>

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

int main()
{
	// 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;
	cin >> N;

	map<string, bool> rainbowDancing; // 무지개 댄스를 추고있는 사람
	rainbowDancing.insert({ "ChongChong", true }); // 총총이를 추가
	int count = 1;

	for (int i = 0; i < N; i++)
	{
		string a, b;
		cin >> a >> b;

		if ((!rainbowDancing[a] && !rainbowDancing[b]) || (rainbowDancing[a] && rainbowDancing[b]))
		{
			// 둘다 무지개 댄스를 추고 있지 않거나 둘다 추고 있는 경우
			continue;
		}
		else
		{
			// 둘 중 하나만 무지개 댄스를 추고 있는 경우 -> 둘 다 무지개 댄스를 추도록 변경
			rainbowDancing[a] = true;
			rainbowDancing[b] = true;

			count++;
		}
	}

	cout << count;

	return 0;
}

<풀이과정>

1. N을 입력받고, map을 이용해 무지개 댄스를 추고 있는 사람을 나타낼 변수 rainbowDancing을 선언하고, 처음에는 총총이만 무지개 댄스를 추고 있으므로 총총이를 true로 추가해주고, 무지개 댄스를 추고 있는 사람의 수를 나타낼 count 변수를 1로 초기화시켜 선언한다.

2. N만큼 반복하면서 이름 a,b를 입력받고, rainbowDaning내의 a와 b를 검색하여 둘 다 무지개 댄스를 추고 있거나 추고 있지 않은 경우에는 아무일도 발생하지 않으므로 넘어간다.

3. 이외의 경우인 둘 중 하나만 무지개 댄스를 추고 있는 경우에는 두 키에 대한 값을 true로 변경시키고, 한 쪽만 무지개 댄스를 추가로 추게 되므로 count를 1 증가시켜준다.

4. 위의 반복을 마친 후 count를 출력해 무지개 댄스를 추는 총 인원을 나타낸다.


<코멘트>

map을 이용해서 어렵지 않게 풀었다!

캐릭터들이 귀여웠음ㅋㅋ


<제출결과>