맛있는감귤

BOJ : 5397 키로거 본문

알고리즘/백준 알고리즘

BOJ : 5397 키로거

맛있는감귤 2017. 2. 15. 17:34

문제 : https://www.acmicpc.net/problem/5397

커서를 이동하며 문자를 삽입하거나 지워야하는 문제는 앵간하면 스택이나 큐로 풀 수 있다.

처음에는 리스트를 생각했지만 iterator로 복잡하게 할 바엔 stack이 나을 것 같아서 stack으로 해결했다.

쉽다고 생각하고 막 풀다가 testcase가 바뀌는 시점에서 줄바꿈을 안하는 멍청한 실수를 했다.


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

stack<char> s1,s2;
int T;
int main(){
    cin>>T;
    while(T--){
        string s;
        cin>>s;
        for(int i=0;i<s.size();i++){
            char c=s.at(i);
            if((c>='a' && c<='z')||(c>='A' && c<='Z')||(c>='0' && c<='9')) s1.push(c);
            if(c=='<' && !s1.empty()) s2.push(s1.top()), s1.pop();
            if(c=='>' && !s2.empty()) s1.push(s2.top()), s2.pop();
            if(c=='-' && !s1.empty()) s1.pop();
        }
        while(!s1.empty()){
            s2.push(s1.top());
            s1.pop();
        }
        while(!s2.empty()){
            cout<<s2.top();
            s2.pop();
        }
        cout<<"\n";
    }
}

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

BOJ : 2979 트럭 주차  (0) 2017.02.21
BOJ : 1890 점프  (0) 2017.02.16
BOJ : 9019 DSLR  (0) 2017.02.09
BOJ : 5427 불  (2) 2017.02.09
BOJ : 1963 소수 경로  (0) 2017.02.08