728x90
🏆 목차.
🛒 문제

단어 뒤집기 2는 stack을 이용하여 푸는 문제로,
해당 문제의 특징은 태그'<>' 내에 있는 단어는 뒤집어지지 않는다는 점입니다.
🎨 코드
#include<iostream>
#include<stack>
#include<string>
using namespace std;
void printStk(stack<char> &stk)
{
while (!stk.empty())
{
cout << stk.top();
stk.pop();
}
}
int main()
{
stack<char>stk;
string str;
getline(cin, str);
bool tag = false;
for (char ch : str)
{
if (ch == '<')
{
printStk(stk);
tag = true;
cout << ch;
}
else if (ch == '>')
{
tag = false;
cout << ch;
}
else if (tag)
{
cout << ch;
}
else
{
if (ch == ' ')
{
printStk(stk);
cout << ch;
}
else
{
stk.push(ch);
}
}
}
printStk(stk);
cout<<'\n';
return 0;
}
🎯 풀이
문자로 공백이 입력되면 stack에 있는 값을 출력하도록 printSkt 함수를 만들었습니다.
그리고 bool 값인 tag를 통해서 문자가 태그인지 아닌지 검사하도록 했습니다.
현재 문자가 태그를 여는 문자인 '<'라면 스택에 있는 문자를 모두 pop 하고 tag를 true로 해줬습니다. 그리고 현재 문자를 출력해 줍니다.
태그를 닫는 문자 '>'라면 tag를 false로 해주고 문자를 출력합니다.
만약 tag가 true라면 태그 안에 있는 문자라는 뜻으로 반전되면 안 되기 때문에 그대로 출력해 주고,
false이고 공백 ' '라면 지금까지 stack에 있는 모든 문자를 출력해 줍니다.
공백이 아니라면 tag 밖에 있는 문자라는 뜻으로 stack에 문자를 push 해 줍니다.
마지막으로 stack에 값이 남아있는 경우를 가정하고 printStk을 해주었습니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++][Queue] 백준 1158번 : 요세푸스 문제 (0) | 2023.10.02 |
---|---|
[C++][Queue] 백준 10845번 : 큐 (0) | 2023.10.02 |
[C++][Stack] 백준 1406번 : 에디터 (0) | 2023.09.29 |
[C++] 백준 1874번 : 스택 수열 (0) | 2023.09.29 |
[C++] 백준 9012번 : 괄호 (0) | 2023.09.28 |