본문 바로가기
백준 알고리즘/시뮬레이션

백준 5397번 C++

by paysmile 2019. 8. 29.

#include <iostream>
#include <string>
#include <stack>
#include <algorithm>

using namespace std;

int main(void) {
	int n;
	string s;

	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> s;
		stack<char> answer,cache;
		for (int j = 0; j < s.length(); j++) {
			if (s[j] == '<') {
				if (!answer.empty()) {
					cache.push(answer.top());
					answer.pop();
				}
			}
			else if (s[j] == '>') {
				if (!cache.empty()) {
					answer.push(cache.top());
					cache.pop();
				}
			}
			else if (s[j] == '-') {
				if (!answer.empty())
					answer.pop();
			}
			else 
				answer.push(s[j]);
		}
		while (!cache.empty()) {
			answer.push(cache.top());
			cache.pop();
		}
		string s;
		while (!answer.empty()) {
			s += answer.top();
			answer.pop();
		}
		reverse(s.begin(), s.end());
		cout << s << endl;
	}
	return 0;
}

'백준 알고리즘 > 시뮬레이션' 카테고리의 다른 글

백준 2979번 C++  (0) 2019.08.29
백준 11559번 C++  (0) 2019.08.29
백준 2161번 C++  (0) 2019.08.28
백준 5532번 C++  (0) 2019.08.28
백준 2164번 C++  (0) 2019.08.28