[伯俊]5430交流
[伯俊]5430交流
質問リンク:https://www.acmicpc.net/problem/5430
問題とI/O
質問へのアクセス
dqで解けました.
入力を受信した部分を少し処理する必要があります]部分と部分が出るときはdqの仕事をします
コマンドにreverseが表示されている場合はflagを使用してreverseを行うことができ、flagがtrueである場合はdqの上部がフロントエンドであると考え、求めます.
コード実装(C++)
#include <iostream>
#include <deque>
#include <string>
using namespace std;
string cmd;
deque<int> dq;
int n;
bool isReverse;
bool doCmd(){
for(int i = 0 ; i < cmd.length() ; i++){
if(cmd[i] == 'R') isReverse = (isReverse) ? false : true;
else{
if(dq.empty()) return false;
if(isReverse){
dq.pop_back();
}
else{
dq.pop_front();
}
}
}
return true;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int testcase;
char temp;
cin >> testcase;
while(testcase--){
isReverse = false;
dq.clear();
cin >> cmd;
cin >> n;
string num = "";
while(1){
cin >> temp;
if(temp == ']') {
if(num != ""){
dq.push_back(stoi(num));
}
break;
}
else if(temp == '[') continue;
else if(temp == ','){
dq.push_back(stoi(num));
num = "";
}
else{
num += temp;
}
}
if(doCmd()){
cout << "[";
if(isReverse){
for(int i = dq.size() - 1 ; i >= 0 ; i--){
cout << dq[i];
if(i != 0) cout << ",";
}
}
else{
for(int i = 0 ; i < dq.size() ; i++){
cout << dq[i];
if(i != dq.size()-1) cout << ",";
}
}
cout << "]\n";
}
else{
cout << "error\n";
}
}
}
Reference
この問題について([伯俊]5430交流), 我々は、より多くの情報をここで見つけました
https://velog.io/@kpg0518/백준-5430번-AC
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <iostream>
#include <deque>
#include <string>
using namespace std;
string cmd;
deque<int> dq;
int n;
bool isReverse;
bool doCmd(){
for(int i = 0 ; i < cmd.length() ; i++){
if(cmd[i] == 'R') isReverse = (isReverse) ? false : true;
else{
if(dq.empty()) return false;
if(isReverse){
dq.pop_back();
}
else{
dq.pop_front();
}
}
}
return true;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int testcase;
char temp;
cin >> testcase;
while(testcase--){
isReverse = false;
dq.clear();
cin >> cmd;
cin >> n;
string num = "";
while(1){
cin >> temp;
if(temp == ']') {
if(num != ""){
dq.push_back(stoi(num));
}
break;
}
else if(temp == '[') continue;
else if(temp == ','){
dq.push_back(stoi(num));
num = "";
}
else{
num += temp;
}
}
if(doCmd()){
cout << "[";
if(isReverse){
for(int i = dq.size() - 1 ; i >= 0 ; i--){
cout << dq[i];
if(i != 0) cout << ",";
}
}
else{
for(int i = 0 ; i < dq.size() ; i++){
cout << dq[i];
if(i != dq.size()-1) cout << ",";
}
}
cout << "]\n";
}
else{
cout << "error\n";
}
}
}
Reference
この問題について([伯俊]5430交流), 我々は、より多くの情報をここで見つけました https://velog.io/@kpg0518/백준-5430번-ACテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol