티스토리 뷰
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
대기업에서 근무하는 상근이가 사내 근퇴 로그를 가지고 있다.
현재 퇴근하지 않아서 사내에 근무중인 사원의 명단을 사즌의 역순으로 출력하는 문제다.
input
출입 로그 숫자
사원명 출근or퇴근
output
근무중 사원의 이름
#include<iostream>
#include<set>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int personCnt = 0;
string person[2];
set<string> state;
cin >> personCnt;
for (int i = 0; i < personCnt; i++) {
cin >> person[0] >> person[1];
if (person[1] == "enter") {
state.insert(person[0]);
}
else {
state.erase(person[0]);
}
}
for (auto it = state.rbegin(); it != state.rend(); it++) {
cout << *it << "\n";
}
return 0;
}
set 쓰면 걍풀린다.
입력받은 사원명에 따라 enter이면 insert, 아니면 erase시키고
사전 역순으로 출력하라고 했으니 rbegin() to rend()로 set을 순회하면 됨.
'알고리즘 문제 풀이' 카테고리의 다른 글
[알고리즘문제] 백준 비밀번호 찾기 (0) | 2021.04.16 |
---|---|
[알고리즘문제] 백준 암기왕(2776번) 시간초과 (0) | 2021.04.14 |
[알고리즘문제] 백준 패션왕 신해빈(9375번) (0) | 2021.04.13 |
[알고리즘문제] 백준 베스트셀러(1302번) (0) | 2021.04.13 |
[알고리즘문제] 프로그래머스 위장 (0) | 2021.04.08 |