리스트는 O(n^2)이라 시간초과
int main()
{
int n;
cin >> n;
list<string> l;
while (n--)
{
string s1, s2;
cin >> s1 >> s2;
if (s2 == "leave")
l.remove(s1);
else
l.push_back(s1);
}
l.sort([&](string l, string r)
{
return l > r;
});
while (!l.empty())
{
cout << l.front() << '\n';
l.pop_front();
}
}
정답) 값 추가할 때마다 재정렬해줌
int main()
{
int n;
cin >> n;
set<string, greater<string>> s;
map<string, string, greater<string>> m;
while (n--)
{
string s1, s2;
cin >> s1 >> s2;
if (s2 == "leave")
m[s1] = " ";
else
m[s1] = s1;
}
for (const auto& i : m)
{
if (i.second != " ")
cout << i.first << '\n';
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[브1] 1356 - 유진수 (0) | 2024.12.10 |
---|---|
[브2] 12605 - 단어순서 뒤집기 (0) | 2024.12.02 |
[실4] 14425 - 문자열 집합 (0) | 2024.12.01 |
[실5] 10815 - 숫자 카드 (0) | 2024.12.01 |
[브1] 1934 - 최소공배수 (0) | 2024.12.01 |