[ ALGORITHM ]/[ 백 준 ]
[BAEKJOON] 5430번 : AC
HiStar__
2020. 7. 31. 17:40
문 제
소 스 코 드
#include <iostream>
#include <deque>
#include <string>
void AC();
void Input_number(std::deque<int>&);
int main() {
std::ios_base::sync_with_stdio(false);
std::cout.tie(NULL);
std::cin.tie(NULL);
int T;
std::cin >> T;
for (int i = 0; i < T; ++i) {
AC();
}
}
void AC() {
std::deque<int> dq;
std::string s;
int index;
std::cin >> s;
std::cin >> index;
Input_number(dq);
bool tf{ false };
for (int i = 0; i < s.length(); ++i) {
if ('R' == s[i]) tf = !tf;
else if ('D' == s[i]) {
if (dq.empty()) {
std::cout << "error" << '\n';
return;
}
if (tf) dq.pop_back();
else dq.pop_front();
}
else return;
}
if (dq.empty()) std::cout << "[]" << '\n';
else if (tf) {
std::cout << "[" << dq.back();
dq.pop_back();
while (!dq.empty()) {
std::cout << "," << dq.back();
dq.pop_back();
}
std::cout << "] \n";
}
else {
std::cout << "[" << dq.front();
dq.pop_front();
while (!dq.empty()) {
std::cout << "," << dq.front();
dq.pop_front();
}
std::cout << "] \n";
}
}
void Input_number(std::deque<int>& dq) {
std::string input;
std::cin >> input;
std::string temp;
int index{ 0 };
for (int i = 0; i < input.length(); ++i) {
if ('[' == input[i]) continue;
else if (']' == input[i]) {
if (0 == index) return;
dq.push_back(std::stoi(temp));
temp.clear();
}
else if (',' == input[i]) {
dq.push_back(std::stoi(temp));
temp.clear();
}
else {
temp.push_back(input[i]);
++index;
}
}
}
풀 이
-
Input을 할 때, 1 ~ 100까지 3자리까지 가능하기 때문에, stoi를 사용하여 값을 입력 받았습니다.
-
deque를 통하여 front와 back에서 뽑는다면 서로 전환 시킬 수 있기 때문에, 실제로 reverse하는 것이 아닌, deque를 통하여 빠르게 구현 할 수 있다.
출 력 값
문 제 출 처
문제 링크 : [ BAEKJOON ] : https://www.acmicpc.net/problem/5430
5430번: AC
문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있
www.acmicpc.net