728x90
🎊목차
✨문제
이번 문제는 stack을 이용해서 문자에 있는 마우스 커서를 이동, 문자 삽입 삭제를 하는 문제입니다.
예를 들어 abcd 문자에서 마우스커서가 중앙에 있고 오른쪽으로 마우스 커서를 이동하는 명령을 했을 때,
왼쪽 stack을 pop 하고 오른쪽 stack으로 push 하는 식으로 해당 기능을 구현할 수 있습니다.
🎈코드
#include <iostream>
#include <stack>
#include<string>
using namespace std;
int main() {
stack<char> left, right;
string str;
cin >> str;
int n;
cin >> n;
for (int i = 0; i < str.length(); i++)
{
left.push(str[i]);
}
while (n--) {
char order;
cin >> order;
if (order == 'L' && !left.empty()) {
right.push(left.top());
left.pop();
}
else if (order == 'D' && !right.empty()) {
left.push(right.top());
right.pop();
}
else if (order == 'B' && !left.empty()) {
left.pop();
}
else if (order == 'P') {
char input;
cin >> input; // 한 글자씩 입력 받음
left.push(input);
}
}
while (!left.empty()) {
right.push(left.top());
left.pop();
}
while (!right.empty()) {
cout << right.top();
right.pop();
}
return 0;
}
🎁풀이
문제에서 처음 마우스커서는 제일 오른쪽에 있다고 했으니
문자를 입력하고 해당 문자를 모두 왼쪽 stack에 push 해줍니다.
다음 각 명령어에 맞춰서 stack의 값을 이동, 삭제, 삽입을 하고,
마지막에 그대로 출력하면 stack의 특성상 값이 반전되어 출력되기 때문에
값을 모두 오른쪽 stack에 push 하고 다시 오른쪽 stack에 있는 모든 값을 pop 하면 됩니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++][Queue] 백준 10845번 : 큐 (0) | 2023.10.02 |
---|---|
[C++][Stack] 백준 17413번 : 단어 뒤집기 2 (0) | 2023.09.30 |
[C++] 백준 1874번 : 스택 수열 (0) | 2023.09.29 |
[C++] 백준 9012번 : 괄호 (0) | 2023.09.28 |
[C++][Stack] 백준 10828번 : 스택(Stack) (0) | 2023.09.27 |