문제
모든 사람의 출입카드 시스템 로그를 가지고 있을 때, 현재 회사에 있는 모든 사람을 사진 순의 역순으로 출력
입력은 이름 뒤에 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "leave"인 경우는 퇴근이다.
생각할 것
map을 사용하기
map은 디폴트가 key를 기준으로 오름차순 정렬한다.
내림차순으로 정렬하려면 map<key_type, value_type, greater<key_type>> 으로 선언한다.
구현
key가 존재할때 leave이면 값 지우기
코드
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
string name, type;
map<string, bool, greater<>> m;
for (int i = 0; i < N; i++) {
cin >> name >> type;
if (type == "enter") {
m.insert({name, true});
} else {
if (m.find(name) != m.end()) m.erase(name);
}
}
for (const auto& it: m) {
cout << it.first << "\\n";
}
return 0;
}
반응형
'Problem solving > BOJ' 카테고리의 다른 글
[BOJ] 6593. 상범 빌딩 (C++) (0) | 2023.08.23 |
---|---|
[BOJ] 2468. 안전 영역 (C++) (0) | 2023.08.23 |
[BOJ] 1920. 수 찾기 (C++) (0) | 2023.08.11 |
[BOJ] 2230. 수 고르기 (C++) (0) | 2023.08.11 |