알고리즘/백준

백준 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;
}

'알고리즘 > 백준' 카테고리의 다른 글

백준 18241 문자열 게임  (0) 2021.12.26
백준 20001 고무오리 디버깅  (0) 2021.12.26
백준 3111 검열  (0) 2021.12.26
백준 2841 외계인의 기타 연주  (0) 2021.12.26
백준 5964 Best Parenthesis  (0) 2021.12.26