본문 바로가기
Algorithm/BOJ

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

by shine-jung 2022. 3. 24.
반응형

문제 링크


코드

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

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    string s;
    cin >> n;
    while (n--) {
        list<char> L;
        auto t = L.begin();
        cin >> s;
        for (auto c : s) {
            switch (c) {
                case '<':
                    if (t != L.begin()) t--;
                    break;
                case '>':
                    if (t != L.end()) t++;
                    break;
                case '-':
                    if (t != L.begin()) {
                        t--; // 앞의 글자를 지움
                        t = L.erase(t); // erase - t가 가리키는 값을 제거, 그 다음 원소의 위치를 반환
                    }
                    break;
                default:
                    L.insert(t, c);
            }
        }
        for (auto i : L) cout << i;
        cout << '\n';
    }
}



설명


연결리스트를 이용한 풀이이다.

연결리스트의 iterator를 커서처럼 활용하면 된다.




(주의) 기록용으로 작성한 글입니다. 좋은 코드가 아닐 수 있습니다.

댓글 환영합니다!


반응형

댓글