본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 7785번 : 회사에 있는 사람

반응형

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

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

정렬과 적절한 자료구조를 이용하는 문제였습니다.

 

풀이방법

 1. n만큼 이름, 상태를 입력받습니다.

 

 2. 상태가 "leave"라면 map에 key가 name, value는 0으로 저장합니다. "enter"라면 map에 같은 key를 가지며 value는 1로 저장합니다.

 

 3. vector에 map의 value가 1인 것들의 이름을 저장한뒤 역순으로 정렬합니다.

 

 4. 정답을 출력합니다.

 

Code

#include <bits/stdc++.h>
using namespace std;
int n;
vector <string> s;
map <string,int> m;
int main(){
    cin >> n;
    while(n--){
        string name, stat;
        cin >> name >> stat;
        if(stat == "leave") m[name] = 0;
        else m[name] = 1;
    }
    for(auto el : m){
        if(el.second) s.push_back(el.first);
    }
    sort(s.rbegin(),s.rend());
    for(auto el : s) cout << el << '\n';
}