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

[백준/BOJ][C++] 25192번 인사성 밝은 곰곰이

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

<문제 소개>


<소스 코드>

#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> user;
	int count = 0;

	for (int i = 0; i < N; i++)
	{
		string s;
		cin >> s;

		if (s == "ENTER")
		{
			user.clear();
		}
		else
		{
			if (!user[s]) // 여기서 user[s]가 없는 경우, user[s] = false로 자동 생성됨
			{
				// 처음 채팅치는 유저인 경우
				user[s] = true;
				count++;
			}
		}
	}

	cout << count;

	return 0;
}

<풀이과정>

1. N을 입력받고, 키로 string, 값으로 bool을 갖는 map user와, 이모티콘이 나온는 횟수 count를 선언한다.

2. N만큼 반복하며 string s를 입력받는다.

3. s가 ENTER인 경우 user를 초기화 시킨다.

4. s가 ENTER가 아닌 경우 user[s]가 false인지 확인하여 처음 채팅치는 유저인지 확인하고, 처음이라면 user[s]를 true로 바꿔주고 count를 1씩 증가시킨다.

5. 위의 반복이 끝난 뒤 count를 출력한다.


<코멘트>

map을 이용해 풀어보았다!

근데 다른 분들의 풀이를 보니 set를 이용해 Enter가 나올 때마다 set의 갯수를 count에 추가하는 방식으로 푼 분들이 많았다!


<제출결과>