728x90
320x100
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
반응형
📌 접근 방법
- deque를 하나 만든다
- 문자열로 입력받은 배열을 숫자로 빼내어 덱에 넣음
- reverse의 기본값은 false이고 R이 입력되면 reverse=true로 바꾸어준다.
- D가 입력됐을 때 덱이 비어있으면 error출력하고 끝.
- reverse=false면 원래대로 앞의 원소를 제거하고 reverse=true면 뒤집힌 상태이기 때문에 뒤의 원소를 제거한다.
- 배열형태로 덱의 값을 출력한다
✅ Pass Code
#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<iterator>
#include<map>
#include<set>
#include<unordered_set>
#include <stack>
#include<queue>
#include<deque>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int T;
cin>>T;
for(int i=0; i<T; i++){
deque<int>d;
string str,arr;
bool err=false;
bool reverse=false;
int x;
cin>>str;
cin>>x;
cin>>arr;
string tmp="";
for(int j=1; j<arr.length(); j++){
if((arr[j]==','||(arr[j]==']')&&tmp!="")){
d.push_back(stoi(tmp));
tmp="";
}
else if(arr[j]>='0'&&arr[j]<='9'){
tmp+=arr[j];
}
}
for(int j=0; j<str.length(); j++){
if(str[j]=='R'){
if(reverse==true)reverse=false;
else reverse=true;
}
else if(str[j]=='D'){
if(d.empty()){
err=true;
break;
}
if(reverse==false){
d.pop_front();
}
else{
d.pop_back();
}
}
}
if(err==true){
cout<<"error\n";
continue;
}
else{
if(d.empty()){
cout<<"[]\n";
continue;
}
cout<<"[";
if (reverse == false) {
for (int j = 0;j < d.size() - 1;j++) cout << d[j] << ",";
cout << d[d.size() - 1] << "]\n";
}
else {
for (int j = d.size()-1;j > 0;j--) cout << d[j] << ",";
cout << d[0] << "]\n";
}
}
}
return 0;
}
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[BOJ/백준/C++] 4779번 칸토어 집합 (0) | 2024.01.28 |
---|---|
[BOJ/백준/C++] 24060번 알고리즘 수업 - 병합 정렬 1 (1) | 2024.01.28 |
[BOJ/백준/C++] 1021번 회전하는 큐 (0) | 2024.01.28 |
[BOJ/백준/C++] 1966번 프린터 큐 (0) | 2024.01.28 |
[BOJ/백준/C++] 11866번 요세푸스 문제 0 (1) | 2024.01.28 |