알고리즘/백준
백준 5397 키로거
등반
2021. 12. 26. 00:45
https://www.acmicpc.net/problem/5397
5397번: 키로거
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입
www.acmicpc.net
두개의 스택을 이용해 스택의 top을 커서로 생각하고 구현하는 문제다.
#include <iostream>
#define fio cin.tie(0)->sync_with_stdio(0)
using namespace std;
#include <stack>
int main(){
fio;
int TC; cin >> TC;
for(int tc = 1; tc <= TC; tc++){
stack<char> left, right;
string S; cin >> S;
for(int i=0; i <S.size(); i++){
char now = S[i];
if(now == '-'){
if(!left.empty()){//지울 것이 있는 경우
left.pop();
}
}else if(now =='<'){
if(!left.empty()){//뭐가 있는 경우
right.push(left.top());
left.pop();
}
}else if(now =='>'){
if(!right.empty()){//뭐가 있는 경우
left.push(right.top());
right.pop();
}
}else{
left.push(now);
}
}
//
while(!left.empty()){
right.push(left.top());
left.pop();
}
while(!right.empty()){
cout << right.top();
right.pop();
}
cout <<'\n';
}
return 0;
}