알고리즘 문제/백준

[C++] 단어 뒤집기2(stack) - 17413

우대비 2022. 11. 18. 20:59
반응형
#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