πŸ•οΈ ICPC Sinchon/Linear Data Structure

[BOJ S5][C++] λ°±μ€€ 7785번 : νšŒμ‚¬μ— μžˆλŠ” μ‚¬λžŒ

선달 2022. 9. 12. 18:44
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/7785

 

7785번: νšŒμ‚¬μ— μžˆλŠ” μ‚¬λžŒ

첫째 쀄에 λ‘œκ·Έμ— 기둝된 μΆœμž… 기둝의 수 n이 주어진닀. (2 ≤ n ≤ 106) λ‹€μŒ n개의 μ€„μ—λŠ” μΆœμž… 기둝이 μˆœμ„œλŒ€λ‘œ 주어지며, 각 μ‚¬λžŒμ˜ 이름이 주어지고 "enter"λ‚˜ "leave"κ°€ 주어진닀. "enter"인 κ²½μš°λŠ”

www.acmicpc.net

 

문제

μƒκ·Όμ΄λŠ” 세계적인 μ†Œν”„νŠΈμ›¨μ–΄ νšŒμ‚¬ κΈ°κΈ€μ—μ„œ μΌν•œλ‹€. 이 νšŒμ‚¬μ˜ κ°€μž₯ 큰 νŠΉμ§•μ€ 자유둜운 μΆœν‡΄κ·Ό μ‹œκ°„μ΄λ‹€. λ”°λΌμ„œ, 직원듀은 λ°˜λ“œμ‹œ 9μ‹œλΆ€ν„° 6μ‹œκΉŒμ§€ νšŒμ‚¬μ— μžˆμ§€ μ•Šμ•„λ„ λœλ‹€.

각 직원은 μžκΈ°κ°€ 원할 λ•Œ μΆœκ·Όν•  수 있고, μ•„λ¬΄λ•Œλ‚˜ 퇴근할 수 μžˆλ‹€.

μƒκ·Όμ΄λŠ” λͺ¨λ“  μ‚¬λžŒμ˜ μΆœμž…μΉ΄λ“œ μ‹œμŠ€ν…œμ˜ 둜그λ₯Ό 가지고 μžˆλ‹€. 이 λ‘œκ·ΈλŠ” μ–΄λ–€ μ‚¬λžŒμ΄ νšŒμ‚¬μ— λ“€μ–΄μ™”λŠ”μ§€, λ‚˜κ°”λŠ”μ§€κ°€ κΈ°λ‘λ˜μ–΄μ Έ μžˆλ‹€. λ‘œκ·Έκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, ν˜„μž¬ νšŒμ‚¬μ— μžˆλŠ” λͺ¨λ“  μ‚¬λžŒμ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 λ‘œκ·Έμ— 기둝된 μΆœμž… 기둝의 수 n이 주어진닀. (2 ≤ n ≤ 106) λ‹€μŒ n개의 μ€„μ—λŠ” μΆœμž… 기둝이 μˆœμ„œλŒ€λ‘œ 주어지며, 각 μ‚¬λžŒμ˜ 이름이 주어지고 "enter"λ‚˜ "leave"κ°€ 주어진닀. "enter"인 κ²½μš°λŠ” 좜근, "leave"인 κ²½μš°λŠ” 퇴근이닀.

νšŒμ‚¬μ—λŠ” 동λͺ…이인이 μ—†μœΌλ©°, λŒ€μ†Œλ¬Έμžκ°€ λ‹€λ₯Έ κ²½μš°μ—λŠ” λ‹€λ₯Έ 이름이닀. μ‚¬λžŒλ“€μ˜ 이름은 μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ κ΅¬μ„±λœ 5κΈ€μž μ΄ν•˜μ˜ λ¬Έμžμ—΄μ΄λ‹€.

좜λ ₯

ν˜„μž¬ νšŒμ‚¬μ— μžˆλŠ” μ‚¬λžŒμ˜ 이름을 사전 순의 μ—­μˆœμœΌλ‘œ ν•œ 쀄에 ν•œ λͺ…μ”© 좜λ ₯ν•œλ‹€.

 

풀이

iterator λ₯Ό 거꾸둜 μˆœνšŒν• λ•ŒλŠ” rend() rbegin()을 μ‚¬μš©ν•˜μž !

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <set>

using namespace std;

int main() {
    ios_base :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    int n;
    cin >> n;
    set<string> s;
    
    for(int i=0; i<n; i++) {
        string name, log;
        cin >> name >> log;
        
        if(log == "enter") s.insert(name);
        else s.erase(name);
    }
    
    for(auto i=s.rbegin(); i!=s.rend(); i++) {
        cout << *i << "\n";
    }
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•