문제 : https://www.acmicpc.net/problem/7785
[알고리즘풀이]
들어간 사람들의 이름과 나간 사람들의 이름을 따로 저장한다.
사전 역순으로 출력해야되기 때문에, Sort를 하고 들어간 사람들의 이름을 역순으로 순회한다.
이때, 나간 사람들의 이름과 겹치면 Pass 아니면 출력을 해준다.
( 나간 사람들도 Sort를 진행했으므로, 현재까지 Check된 나간 사람들을 나타내주는 int p 를 이용한다. )
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(void) {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int n;
cin >> n;
vector<string> v, k;
for (int i = 0; i < n; i++) {
string temp1, temp2;
cin >> temp1 >> temp2;
if (temp2 == "enter")
v.push_back(temp1);
else {
k.push_back(temp1);
}
}
sort(v.begin(), v.end());
sort(k.begin(), k.end());
bool flag = false;
if (k.empty())
flag = true;
int p = k.size() - 1;
for (int i = v.size() - 1; i >= 0; i--) {
if (flag){
cout << v[i] << '\n';
continue;
}
if (v[i] != k[p])
cout << v[i] << '\n';
else{
p--;
if (p == -1)
flag = true;
}
}
}
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 2153 - 소수단어 (0) | 2019.09.29 |
---|---|
[BOJ] 11659 - 구간 합 구하기 4 (0) | 2019.09.27 |
[BOJ] 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2019.09.24 |
[BOJ] 1759 - 암호 만들기 (0) | 2019.09.24 |
[BOJ] 1644 - Sum of Consecutive Prime (0) | 2019.09.24 |