๐ŸŒฒ Altu-Bitu/0906 ๋งต๊ณผ ์…‹

[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;
}

/*
 */
๋ฐ˜์‘ํ˜•