[백준] 키로거 #5397

welchs·2022년 1월 23일
0

알고리즘

목록 보기
21/44
post-thumbnail

설명

일반적인 배열을 쓰면 시간초과 날 것같아 JS는 포기하고 C++에서 제공하는 자료구조를 사용해서 풀려고 했다.
다른 사람의 풀이를 참고했는데 C++은 deque를 2개둬서 커서를 기준으로 leftDQ, rightDQ를 둬서 문제의 요구사항대로 연산을 수행하고 결과를 리턴했다.

다른 사람의 풀이를 참고했을 때, deque 뿐만아니라 순수하게 2개의 스택으로도 커서 기준 왼쪽, 오른쪽을 나눠서 값을 얻을 수 있기 때문에 JS의 경우 스택 2개를 활용해 풀었다.

Node.js 풀이

추후 작성 예정

C++ 풀이

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

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    int N; cin >> N;
    while(N--) {
        string str; cin >> str;
        deque<char> leftDQ;
        deque<char> rightDQ;
        for (auto ch : str) {
            if (ch == '<') {
                if (leftDQ.empty()) continue;
                rightDQ.push_front(leftDQ.back());
                leftDQ.pop_back();
            }
            else if (ch == '>') {
                if (rightDQ.empty()) continue;
                leftDQ.push_back(rightDQ.front());
                rightDQ.pop_front();
            }
            else if (ch == '-') {
                if (!leftDQ.empty()) leftDQ.pop_back();
            }
            else {
                leftDQ.push_back(ch);
            }
        }
        for (auto ch : leftDQ) cout << ch;
        for (auto ch : rightDQ) cout << ch;
        cout << '\n';
    }
    return 0;
}
profile
고수가 되고 싶은 조빱

0개의 댓글