본문 바로가기
Algorithm(C++)

[BOJ - 5397] 키로거(C++)

by alswns8081 2025. 2. 8.

 

  문제

  접근 방법

'<' '>' 를 통해서 이동하며 해당 위치의 값을 지우고 삽입하는 과정을 진행 -> list로 선언

iterator을 활용하여 조건문을 통해 판별, 지우는 경우에는 it의 값을 갱신해야 함, it = S.erase(it)

이 과정을 거치면 결과적으로 문제 해결 가능.

 

 

  코드

#include <iostream>
#include <list>

using namespace std;

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

    int T;
    cin >> T;

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

        list<char> S;
        list<char>::iterator it = S.begin();
        for (char c : L) {
            if (c == '<') {
                if (it != S.begin()) it--;
            } else if (c == '>') {
                if (it != S.end()) it++;
            } else if (c == '-') {
                if (it != S.begin()) {
                    it--;
                    it = S.erase(it);
                }
            } else {
                S.insert(it, c);
            }
        }

        for (char c : S) cout << c;
        cout << '\n';
    }

    return 0;
}

 

  링크

5397번: 키로거

'Algorithm(C++)' 카테고리의 다른 글

[BOJ - 5430] AC(C++)  (0) 2025.02.10
[BOJ - 11478] 서로 다른 부분 문자열의 개수(C++)  (0) 2025.02.08