본문 바로가기
Algorithm/Baekjoon

[백준/BOJ] 5397번 - 키로거 (C++)

by shine-jung 2021. 8. 17.
반응형

문제 링크

 

코딩하기 전 생각하기

/*
STL list를 활용하자.
커서의 위치를 t라고 하고 t에 list의 begin iter값을 넣어준다.
입력받은 문자열을 순회한다.
    문자가 '<' 또는 '>'이면 커서 위치를 바꿔준다.
    문자가 '-'이면 커서 위치에 있는 list의 문자를 삭제한다.
    위의 경우가 아니면 커서 위치에 문자를 추가한다.
list를 출력한다.
*/

 


 

코드

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        list<char> lt;
        auto t = lt.begin();
        string s;
        cin >> s;
        for (int j = 0; j < s.size(); j++) {
            if (s[j] == '<') {
                if (t != lt.begin())
                    t--;
            }
            else if (s[j] == '>') {
                if (t != lt.end())
                    t++;
            }
            else if (s[j] == '-') {
                if (t != lt.begin()) {
                    t--;
                    t = lt.erase(t);
                }
            }
            else {
                lt.insert(t, s[j]);
            }
        }
        for (auto i : lt)
            cout << i;
        cout << '\n';
    }
}

 


 

느낀점

 

개강이 2주도 안남았다니 믿을 수 없다 !!

 

(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.

댓글 환영합니다!

반응형

댓글