백준 7785 - 회사에 있는 사람

2022. 8. 26. 00:20코딩 공부 연습

반응형

오늘 문제는 많이 어려운건 아니었는데 그동안 소홀히 했던 해시 stl 을 좀 잘 알아보자는 취지로 set을 이용해서 풀었다. 

map.find, map.erase, map.insert 같은건 다 쉽다.

이제 이 map 을 우리가 종종 사용하던 벡터처럼 바꿔서 정렬하고, 이것저것 하고싶은데 어떻게 해야할까?

 

걍 벡터로 바꾸면 된당! ㅋㅋ

#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <unordered_set>
#include <math.h>

using namespace std;

int main()
{
    int n;
    string name, action;
    unordered_set <string> m;
    
    cin >> n;
    for(int i = 0; i< n; i++)
    {
        cin >> name >> action;
        if (action == "enter" && m.find(name) == m.end())
            m.insert(name);
        else if (action == "leave" && m.find(name) != m.end())
            m.erase(name);
    }
    vector <string> ans(m.begin(), m.end());
    sort(ans.begin(), ans.end(), greater<string>());
    for (auto x : ans) cout << x<<'\n';
}

맨 마지막 3줄이 핵심이다. 이거 잘 몰랐다. 이렇게 하면 훨씬 편하구나 앞으로 벡터를 선언과 동시에 저렇게 쓰는 방법을 절대 잊지 말아야 겠다!!

vector <string> ans 로 변수 선언해주고, 거기서 바로 괄호 열고 map의 begin 과 end를 선언해주면 되는 것!

하고나니 어떻게 하면 좋을까 자꾸 걱정이었던 정렬이 스르-륵된당

출력해주면 끝!

'코딩 공부 연습' 카테고리의 다른 글

프로그래머스 - 방문 길이  (0) 2022.08.30
프로그래머스 - 위장  (0) 2022.08.26
백준 - 5014 스타트링크  (0) 2022.08.24
프로그래머스 - 네트워크  (0) 2022.08.24
백준 2468 안전영역  (0) 2022.08.23