4
push_front 1
push_front 2
pop_back
pop_front
10866번 - 덱
#include<stdio.h>
#define deque_size 10000
int deque[deque_size]={0,};
int f=0;
int b=deque_size-1;
void push_front();
void push_back();
void pop_front();
void pop_back();
void size();
void empty();
void front();
void back();
int main(void){
int num_of_order;
char order[20];
scanf("%d", &num_of_order);
int i;
for(i=0; i<num_of_order; i++){
scanf("%s", order);
if(strcmp(order,"push_front") == 0) push_front();
else if(strcmp(order,"push_back") == 0) push_back();
else if(strcmp(order,"pop_front") == 0) pop_front();
else if(strcmp(order,"pop_back") == 0) pop_back();
else if(strcmp(order,"size") == 0) size();
else if(strcmp(order,"empty") == 0) empty();
else if(strcmp(order,"front") == 0) front();
else if(strcmp(order,"back") == 0) back();
}
return 0;
}
void push_front(){
int num;
scanf("%d", &num);
deque[f] = num;
f++;
}
void push_back(){
int num;
scanf("%d", &num);
deque[b] = num;
b--;
}
void pop_front(){
if(deque[f-1]!=0 && f-1>=0){
printf("%d\n", deque[f-1]);
deque[f-1]=0;
f--;
}
else if(deque[deque_size-1]!=0){
printf("%d\n", deque[deque_size-1]);
deque[deque_size-1]=0;
// b++;
}
else
printf("-1\n");
}
void pop_back(){
if(deque[b+1]!=0 && b+1<10000){
printf("%d\n", deque[b+1]);
deque[b+1]=0;
b++;
}
else if(deque[0]!=0){
printf("%d\n", deque[0]);
deque[0]=0;
// f--;
}
else
printf("-1\n");
}
void size(){
int count=0;
int i;
for(i=0; i<deque_size; i++){
if(deque[i]!=0)
count++;
}
printf("%d\n", count);
}
void empty(){
if(b-f==deque_size-1)
printf("1\n");
else
printf("0\n");
}
void front(){
if(deque[f-1]!=0 && f-1>=0)
printf("%d\n", deque[f-1]);
else if(deque[deque_size-1]!=0)
printf("%d\n", deque[deque_size-1]);
else
printf("-1\n");
}
void back(){
if(deque[b+1]!=0 && b+1<10000)
printf("%d\n", deque[b+1]);
else if(deque[0]!=0)
printf("%d\n", deque[0]);
else
printf("-1\n");
}
주
주석처리해서 반례 해결했는데도 틀리네요ㅠㅠ
지금 보니 첫 번째 코드 예제도 안 돌아가는데요?
두 번째 코드도 마찬가지입니다.
댓글을 작성하려면 로그인해야 합니다.
deok0726 5년 전
ㅓ가 문제일까요...예제는 다 통과합니다ㅜ