반응형
#include <iostream>
#include <stack>
#include <string>
using namespace std;
string RvsWord(string& str)
{
int size = static_cast<int>(str.length()) - 1;
string c = "";
int be = 0;
stack<char> st;
for (int i = 0; i <= size; i++)
{
if (str[i] == '<')
be++;
if (be > 0)
{
c += str[i];
if (str[i] == '>')
be = be > 0 ? be - 1: 0;
if (be == 0)
{
if (str[i + 1] == '<')
continue;
if (i++ >= size)
break;
}
}
if (str[i] != ' ' && be == 0)
st.push(str[i]);
int next = i + 1 > size ? size : i + 1;
if ((str[i] == ' ' || str[next] == '<' || i == size) && be == 0)
{
while (!st.empty())
{
c += st.top();
st.pop();
}
if (i != size && str[next] != '<')
c += ' ';
}
}
return c += "";
}
int main()
{
;
string a;
getline(cin, a);
cout << RvsWord(a);
return 0;
}
반응형
LIST
'알고리즘 문제 > 백준' 카테고리의 다른 글
[C++] 수 정렬하기 2(병합정렬) - 2751 (0) | 2022.11.22 |
---|---|
[C++] 쇠막대기 - 10799 (0) | 2022.11.19 |
[C++] 덱(deque) - 10866 (0) | 2022.11.18 |
[C++] 스택 - 10828 (0) | 2022.11.17 |
[C++] 요세푸스(Queue) - 1158 (0) | 2022.11.16 |