17413번: 단어 뒤집기 2

Memo


생각보다 까다로운 문제...

'<'를 만났을 때와 ' '를 만났을 경우를 한번에 처리하긴 어려운 것 같다.

Code


제출 날짜

2021/05/07

메모리

2516 KB

시간

0 ms

#include <deque>
#include <iostream>
#include <string>
#include <vector>

std::string str;
std::string res;
std::deque<char> deq;
void output()
{
	std::cout << res;
}

void solution()
{
	for (size_t i = 0; i < str.size(); ++i)
	{
		if (str[i] == '<')
		{
			while (str[i] != '>')
			{
				res += str[i];
				++i;
			}
			res += str[i];
		}
		else
		{
			while (str[i] != '<' && str[i] != ' ' && i < str.size())
			{
				deq.push_front(str[i]);
				++i;
			}
			while (!deq.empty())
			{
				res += deq.front();
				deq.pop_front();
			}
			if (str[i] == ' ')
				res += str[i];
			if (str[i] == '<')
				--i;
		}
		deq.clear();
	}
	while (!deq.empty())
	{
		res += deq.front();
		deq.pop_front();
	}
}

void input()
{
	getline(std::cin, str);
	res = "";
}

void preset()
{
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
}

int main()
{
	preset();
	input();
	solution();
	output();
}