백준 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 |