Notice
Recent Posts
Link
정화 코딩
[C++] AC (백준 5430번) 본문
https://www.acmicpc.net/problem/5430
#include <iostream>
#include <deque>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int tn;
cin >> tn;
while(tn--) {
string func;
cin >> func;
int n;
cin >> n;
string str;
cin >> str;
string tmp;
deque<int> deq;
for (char c: str) {
if (c == '[') {
continue;
} else if (c == ',' || c == ']') {
if (tmp != "") deq.push_back(stoi(tmp));
tmp = "";
} else {
tmp = tmp + c;
}
}
bool reverse = false;
bool isError = false;
for (char c: func) {
if (c == 'R') {
if (reverse) reverse = false;
else reverse = true;
} else if (c == 'D') {
if (deq.empty()) {
isError = true;
break;
}
if (reverse) deq.pop_back();
else deq.pop_front();
}
}
if (isError) {
cout << "error\n";
} else {
cout << "[";
if (deq.empty()) {
cout << "]\n";
} else {
if (reverse) {
while (deq.size() > 1) {
cout << deq.back() << ",";
deq.pop_back();
}
cout << deq.back() << "]\n";
} else {
while (deq.size() > 1) {
cout << deq.front() << ",";
deq.pop_front();
}
cout << deq.front() << "]\n";
}
}
}
}
}
덱을 전부 뒤집기에는 시간이 너무 아까우니 덱의 앞을 앞으로 볼 것인지 덱의 뒤를 앞으로 볼 것인지를 저장하는 변수 reverse를 사용하여 해결하였다. 근데 테스트 케이스가 여러개인데 코드 중간에 return 0;을 하는 실수를 해서 좀 시간을 버렸다.. ㅎㅎ (정답)
'PS' 카테고리의 다른 글
[C++] 엘리스 알고리즘 코드 챌린지 7/8 : 목표량 (0) | 2024.07.08 |
---|---|
[C++] 선물 (백준 1166번) (0) | 2024.07.07 |
[C++] 사각형 게임 (Small) (백준 25046번) (0) | 2024.07.04 |
[C++] 상근타워 (백준 3541번) (2) | 2024.07.01 |
[C++] 신비로운 수 (백준 17433번) (2) | 2024.07.01 |
Comments