코딩고치

[백준][자료구조]단어 뒤집기 본문

백준 알고리즘 기초/자료구조

[백준][자료구조]단어 뒤집기

코딩고치 2019. 9. 6. 01:50

이 문제는 태그(<   >)안에 들어있는 문자열은 그대로 출력하고 태그 밖의 문자는 뒤집어서 출력하는 프로그램을 만드는 문제이다. 이 문제를 풀 때 태그 안의 문자는 큐를 이용하여 입출력을 하였고 태그 밖의 문자는 스택을 이용하여 입출력하도록 코드를 작성하였다.

#include <iostream>
#include <string>
#include <stack>
#include <queue>
using namespace std;

void reverse(stack<char> &s)
{
	while (!s.empty())
	{
		cout << s.top();
		s.pop();
	}
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	string str;
	getline(cin, str);
	str += '\n';

	stack<char> s;
	queue<char> q;

	for (int i = 0; i < (int)str.length(); i++)
	{
		if (str[i] == '<')
		{			
			reverse(s);

			while (str[i] != '>')
			{
				q.push(str[i]);
				i++;
			}
			while (!q.empty())
			{
				cout << q.front();
				q.pop();
			}
			cout << str[i];
		}
		else
		{
			if (str[i] == ' ' || str[i] == '\n')
			{
				reverse(s);
				cout << str[i];
			}
			else
				s.push(str[i]);
		}
	}
	
	cout << '\n';
	return 0;
}

작성하고 보니 굳이 큐를 쓰지 않아도 됐을 것 같은 생각이 든다.

 

Comments