Search
Duplicate
📗

키로거

주차
문제번호
5397
언어
C++
티어
실버
유형
자료구조
스택
연결 리스트
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

deque의 back이 현재 커서라고 생각하면 됨. 문자가 들어오면 그곳에 넣는다
< 면 deque의 back을 stack에 넣는다.
>면 stack의 top을 deque에 push_back한다. 커서가 바뀌기 떄문에
- 면 deque pop_back
각 행동을 할때 각 자료구조가 비어있지 않는지 확인
마지막에 stack 전부를 deque에 넣는다
deque을 front부터 출력

놓쳤던 부분

코드

3736 KB

108 ms

#include <iostream> #include <stack> #include <deque> #include <string> using namespace std; int main(void) { int n; string input; deque<char> answer; stack<char> tmp; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i < n; i++) { cin >> input; for (unsigned int j = 0; j < input.size(); j++) { if (input[j] == '<') { if (!answer.empty()) { tmp.push(answer.back()); answer.pop_back(); } } else if (input[j] == '>') { if (!tmp.empty()) { answer.push_back(tmp.top()); tmp.pop(); } } else if (input[j] == '-') { if (!answer.empty()) answer.pop_back(); } else answer.push_back(input[j]); } while (!tmp.empty()) { answer.push_back(tmp.top()); tmp.pop(); } while (!answer.empty()) { cout << answer.front(); answer.pop_front(); } cout << "\n"; } return (0); }
C++
복사