728x90
- 문제 사이트: https://www.acmicpc.net/problem/25192
채팅을 입력한 아이디 확인 시, "ENTER" 문자열이 입력된 후에 처음 입력된 아이디들을 카운팅 하는 문제이다.
입력했었는지 여부를 확인하기 위해서는 맵을 사용하였다.
1) 총 횟수 입력 받음: N
2) 새로운 사람의 입장을 나타내는 "ENTER" 인지 확인
3-1) "ENTER" 인 경우, 현재까지 저장된 아이디 개수 저장하고 아이디 목록 초기화
3-2) "ENTER" 아닌 경우, 카운팅 값 증가시키고 아이디 저장
4) 모든 입력이 완료된 뒤, 현재까지 저장된 아이디 개수 저장
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;
int total = 0;
string str;
map<string, bool> names;
for (int i = 0; i < N; i++)
{
cin >> str;
if (str == "ENTER")
{
total += names.size();
names.clear();
}
else
{
names[str] = true;
}
}
total += names.size();
cout << total << endl;
return 0;
}
- 메모리: 8892 KB
- 시간: 100 ms
- 코드 길이: 662 B
아이디의 입력 여부만 확인하면 되므로, map 대신 unordered_set을 사용해줄 수도 있다.
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int total = 0;
string str;
unordered_set<string> names;
for (int i = 0; i < N; i++)
{
cin >> str;
if (str == "ENTER")
{
total += names.size();
names = unordered_set<string>();
}
else
{
names.insert(str);
}
}
total += names.size();
cout << total << endl;
return 0;
}
- 메모리: 8312 KB
- 시간: 32 ms
- 코드 길이: 582 B
728x90
'Algorithm > BackJoon' 카테고리의 다른 글
1550번: 16진수 (0) | 2023.09.13 |
---|---|
4779번: 칸토어 집합 (0) | 2023.09.12 |
1158번: 요세푸스 문제 (0) | 2023.09.10 |
1920번: 수 찾기 (0) | 2023.09.09 |
10866번: 덱 (0) | 2023.09.08 |
댓글