티스토리 뷰

www.acmicpc.net/problem/7785

 

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을 순회하면 됨.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함