deque를 사용해 결과를 구하는 문제이다. 반복순회를 필요이상으로 많이 한거 같다...
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
void input_card(vector<vector<char>>& card)
{
int T, N;
int i, j;
char temp;
cin >> T;
for (i = 0; i < T; i++)
{
vector<char> tempcard;
cin >> N;
for (j = 0; j < N; j++)
{
cin >> temp;
tempcard.push_back(temp);
}
card.push_back(tempcard);
}
return;
}
void find_answer(vector<vector<char>>& card)
{
int i, j;
char current;
for (i = 0; i < card.size(); i++)
{
deque<char> answer;
for (j = 0; j < card[i].size(); j++)
{
current = card[i][j];
if (answer.empty())
{
answer.push_front(current);
}
else
{
if (answer.front() < current)
{
answer.push_back(current);
}
else
{
answer.push_front(current);
}
}
}
for (char temp : answer)
{
cout << temp;
}
cout << "\n";
}
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<vector<char>> card;
input_card(card);
find_answer(card);
return 0;
}