반응형
문제 링크 : https://www.acmicpc.net/problem/5430
5430번: AC
문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있
www.acmicpc.net
>풀이
덱(deque)를 활용하는 문제입니다.
덱이란, 스택과 큐를 합친 개념을 가진 컨테이너라고 생각하시면 편할 것 같습니다. .pop_front와 .pop_back / .push_front와 .push_back 을 모두 지원합니다.
배열을 입력받는 것이 귀찮은데, 저는 '[' 등을 처리하기 위해 getchar() 를 썼는데, strtok를 쓰면 좀더 깔끔할 겁니다.
#include <cstdio>
#include <cstring>
#include <deque>
using namespace std;
int main(void) {
int tc;
scanf("%d", &tc);
while (tc--) {
char p[100001];
int n, x, length;
bool path = true;
bool check = true;
deque<int> dq;
scanf("%s", p);
scanf("%d", &n);
getchar(), getchar();
if (n) {
for (int i = 0; i < n - 1; i++) {
scanf("%d,", &x);
dq.push_back(x);
}
scanf("%d]", &x);
dq.push_back(x);
}
getchar();
length = strlen(p);
for (int i = 0; i < length; i++) {
switch (p[i]) {
case 'R' :
path ^= true;
break;
case 'D' :
if (dq.empty()) {
check = false;
break;
}
if (path) dq.pop_front();
else dq.pop_back();
break;
}
}
if (!check) {
puts("error");
continue;
}
putchar('[');
while (!dq.empty()) {
int n2;
if (path) {
n2 = dq.front();
dq.pop_front();
}
else {
n2 = dq.back();
dq.pop_back();
}
printf("%d", n2);
if (dq.empty()) break;
else putchar(',');
}
printf("]\n");
}
return 0;
}
(개발 환경 : vs code)
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
백준 6603 (로또) / C++ (0) | 2020.07.11 |
---|---|
백준 9663 (n-Queen) / C++ (0) | 2020.07.10 |
백준 1966 (프린터 큐) / C++ (0) | 2020.07.08 |
백준 1874 (스택 수열) / C++ (0) | 2020.07.08 |
백준 10816 (숫자 카드 2) / C++ (0) | 2020.07.08 |