기본 콘텐츠로 건너뛰기

[BOJ 5430] Integer list

아래 문제에서 error를 출력할때 continue를 입력했을경우, break 대신에 error가 무기한 출력이되는 문제가 발생한다.
BAPC 2012 문제의 테스트 케이스를 분석해보고 나서야 깨달았다............. 주의해야 겠다
#include <iostream>
#include <vector>
#include <string>
#include <deque>
using namespace std;
int main()
{
deque<int> deq;
int T;
cin >> T;
string op;
int ary_size, num;
for (int i = 0; i < T; i++) {
cin >> op;
cin >> ary_size;
char ch;
bool reverse = false;
cin >> ch;
deq.clear();
for (int j = 0; j < ary_size; j++) {
cin >> num;
cin >> ch;
deq.push_back(num);
}
if (ary_size == 0)
cin >> ch;
bool print = true;
for (int j = 0; j < op.size(); j++) {
if (op[j] == 'R')
{
reverse = !reverse;
}
else if (op[j] == 'D') {
if (deq.empty())
{
cout << "error" << endl;
print = false;
break;
}
if (reverse)
deq.pop_back();
else
deq.pop_front();
}
}
if (print == false)
continue;
cout << "[";
if (reverse) {
for (int i = 0; i < deq.size()/2; i++) {
int temp = deq[i];
deq[i] = deq[deq.size() - i - 1];
deq[deq.size() - i - 1] = temp;
}
}
for (int j = 0; j < deq.size(); j++) {
if (j == deq.size() - 1) {
cout << deq[j];
}
else
cout << deq[j] << ",";
}
cout << "]" << endl;
}
}

댓글

이 블로그의 인기 게시물

Tree traversal의 3가지

1. 전위 순회 (Preorder Traversal) Root -> Left Tree -> Right Tree   ( 루트를 제일 처음에 방문 ) 2. 중위 순회 (Inorder Traversal) Left Tree -> Root -> Right Tree   ( 루트를 중간에 방문 ) 3. 후위 순회 (Postorder Traversal) Left Tree -> Right Tree -> Root   ( 루트를 제일 마지막에 방문 ) <소스코드> 출처 : http://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder /// C program for different tree traversals #include <stdio.h> #include <stdlib.h> /* A binary tree node has data, pointer to left child    and a pointer to right child */ struct node {      int data;      struct node* left;      struct node* right; }; /* Helper function that allocates a new node with the    given data and NULL left and right pointers. */ struct node* newNode(int data) {      struct node* node = (struct node*)                 ...