본문 바로가기
Problem solving/BOJ

[BOJ] 7785. 회사에 있는 사람 (C++)

by 겸 2023. 8. 11.

문제

모든 사람의 출입카드 시스템 로그를 가지고 있을 때, 현재 회사에 있는 모든 사람을 사진 순의 역순으로 출력

입력은 이름 뒤에 "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