반응형
https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
[ 문제풀이 ]
1. 값들을 입력받고, 전처리를 통해서 배열의 값들을 deque에 넣어줍니다.
2. R이 입력되면 rev변수를 갱신해 줍니다.
3. rev변수의 값에 따라 pop_back, 혹은 pop_front를 해줍니다.
4. deq에 남아있는 수를 rev변수에 따라 출력해 줍니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #include<iostream> #include<deque> #include<string> using namespace std; int T; deque<int> deq; void preproc(string x) { int num = 0; for (auto next : x) { if (next >= '0' && next <= '9') { num *= 10; num += next - '0'; } else if (next == ']' || next == ',') { deq.push_back(num); num = 0; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> T; while (T--) { bool flag = true; bool rev = false; deq.clear(); string p, x; int n; cin >> p >> n >> x; if (n) preproc(x); for (auto com : p) { if (com == 'R') { rev = !rev; } else { if (!deq.empty()) { if (rev) { deq.pop_back(); } else { deq.pop_front(); } } else { cout << "error\n"; flag = false; break; } } } if (flag) { cout << '['; while (!deq.empty()) { if (rev) { if (deq.size() == 1) { cout << deq.back(); } else { cout << deq.back() << ','; } deq.pop_back(); } else { if (deq.size() == 1) { cout << deq.front(); } else { cout << deq.front() << ','; } deq.pop_front(); } } cout << "]\n"; } } } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 10866번 - 덱 (C++) (0) | 2023.07.11 |
---|---|
[ 백준 ] 3151번 - 합이 0 (C++) (0) | 2023.07.10 |
[ 백준 ] 17298번 - 오큰수 (C++) (0) | 2023.07.08 |
[ 백준 ] 6198번 - 옥상 정원 꾸미기 (C++) (0) | 2023.07.07 |
[ 백준 ] 1456번 - 거의 소수 (C++) (0) | 2023.07.06 |