문제설명
상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가
기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.
입출력
현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다.
풀이
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<string> _s;
int _n;
cin >> _n;
for (int i = 0; i < _n; i++)
{
string name, access;
cin >> name >> access;
if (access == "enter")
{
_s.insert(name);
}
else
{
_s.erase(name);
}
}
set<string>::reverse_iterator rit;
for (rit = _s.rbegin(); rit != _s.rend(); ++rit)
cout << *rit << '\n';
}
로직 설명
string형 set과 몇명인지 담는 int 변수 n을 만들어주고 n을 입력받는다.
n만큼 반복문을 돌려주고, string형 name(직원 이름), access(들어왔는지 나갔는지)를 선언해주고 둘 다 입력받는다.
- access값이 enter일 때
set에 이전에 입력받았던 이름(name)을 insert해준다.
- access 값이 leave일 때
name을 erase해준다.
reverse_iterator를 사용하여 현재 회사에 있는 사람들을 역순으로 출력해준다.
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스][C++] 배열 회전시키기 (0) | 2023.10.26 |
---|---|
[NYPC문제][C++] 메이플스토리 새로운 직업 고르기 (0) | 2023.10.23 |