[백준 / C++] 7785번 회사에 있는 사람

akim·2023년 1월 14일
0

Algorithm 

목록 보기
2/14

문제 재정의 및 추상화

결론: leave가 찍히지 않은 사람들의 목록을 사전 역순으로 구하라


문제 접근 방식

  • 이름과 상태정보가 주어지는데, 정렬이 필요하다.
    -> 이름값을 기준으로 정렬하는 map을 이용해보자.

해법을 찾는데 결정적이었던 깨달음

📌 맵을 내림차순으로 정렬하려면 map<string, string, greater<string>> m; 과 같이 키값의 자료형에 greater 를 써서 추가해주면 된다.


문제 풀이 로직

  1. 출입 기록의 수 n을 입력받는다.
  2. n번 반복하며 출입 기록을 맵에 입력받는다.
    2-1. 만약 기록 내용이 enter 이면 맵에 기록을 입력한다.
    2-2. 만약 기록 내용이 leave 이면 맵에서 기록을 지운다.
  3. 키값을 역순으로 출력한다.

문제 풀이

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    string key, value;
    map<string, string, greater<string>> m;
    vector<string> v;
    
    cin >> n;
    
    for(int i = 0; i < n; i++){
        cin >> key >> value;
        if(value == "enter") m.insert(make_pair(key, value));
        else m.erase(key);
    }
    
    for(auto it : m){
      cout << it.first << "\n";
    }
    
    return 0;
}
profile
학교 다니는 개발자

0개의 댓글