[백준/C++] 5397번 키로거

2021. 3. 19. 19:28알고리즘/구현

728x90
반응형

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

 

5397번: 키로거

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L의 길이 ≤ 1,000,000) 강산이가 백스페이

www.acmicpc.net

 

 

문제풀이

 

C++ STL list iterator를 이용하여 문제를 풀었다.

 

 

코드

#include <iostream>
#include <list>

using namespace std;

int main(){
    ios::sync_with_stdio(false); cin.tie(NULL);

    int T;
    cin>>T;

    list<char> l;

    while(T--){
        string str;
        cin>>str;

        list<char>::iterator cursor = l.begin();

        for(auto c : str){
            if(c == '<'){
                if(cursor != l.begin()){
                    cursor--;
                }
            }
            else if(c == '>'){
                if(cursor != l.end()){
                    cursor++;
                }
            }
            else if(c == '-'){
                if(!l.empty()&&cursor != l.begin())
                    cursor = l.erase(--cursor);
            }
            else{
                l.insert(cursor, c);
            }
        }

        for(auto c : l)
            cout<<c;

        l.clear();
        cout<<"\n";
    }

    return 0;
}

 

결과

728x90
반응형

'알고리즘 > 구현' 카테고리의 다른 글

[백준/C++] 1021번 회전하는 큐  (0) 2021.03.21
[백준/C++] 2493번 탑  (0) 2021.03.20
[백준/C++] 1927번 최소 힙  (0) 2021.03.11
[백준/C++] 18870번 좌표 압축  (0) 2021.02.26
[백준/C++] 11279번 최대 힙  (0) 2021.02.25