Search
Duplicate
🙆🏻‍♀️

에디터

주차
15
문제번호
1406
언어
티어
실버
유형
자료구조
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

메모리

시간

2812 KB
112 ms

Code

#include <cstdio> #include <stack> #include <string> #include <iostream> using namespace std; int main() { string n; stack <char> s1; stack <char> s2; int m, len; cin >> n; cin >> m; len = n.length(); for (int i = 0; i < len; i++) { s1.push(n[i]); } char input; for (int i = 0; i < m; i++) { cin >> input; if (input == 'L' && !s1.empty()) { s2.push(s1.top()); s1.pop(); } else if (input == 'P') { cin >> input; s1.push(input); } else if (input == 'D' && !s2.empty()) { s1.push(s2.top()); s2.pop(); } else if (input == 'B' && !s1.empty()) s1.pop(); } while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } while (!s2.empty()) { printf("%c", s2.top()); s2.pop(); } return 0; }
C++
복사

문제 풀이

두개의 stack을 사용해 커서의 위치를 구분하였고 입력값에 따라 두개의 스택에서 값을 push, pop하여
모든 입력이 끝나면 순서대로 출력을 위해 s1 → s2 에 담은 뒤 출력하였다.