[백준] 키로거 #5397
설명
일반적인 배열을 쓰면 시간초과 날 것같아 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;
}
Author And Source
이 문제에 관하여([백준] 키로거 #5397), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ahu8867/백준-키로거-5397저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)