반응형
<문제 소개>
<소스 코드>
#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에 추가하는 방식으로 푼 분들이 많았다!
<제출결과>