push_front를 계속하면 인덱스가 어디로 갈까요?
10866번 - 덱
네, 답변 감사드립니다.
그 부분은 아래와 같이 구현되어 있고, 테스트 결과도 문제가 없습니다.
테스트 결과 이것 저것 해보는데 잘 안보이네요 T.T
que.size=n+1; //명령의 수 N
que.front=(que.front-1)%que.size;
----------test결과...
20
push_front 1
push_front 2
push_front 3
push_front 4
push_front 5
push_front 6
push_front 7
push_front 8
push_front 9
push_front 10
push_front 11
push_front 12
push_front 13
push_front 14
push_front 15
size
15
pop_back
1
pop_back
2
back
3
size
13
댓글을 작성하려면 로그인해야 합니다.
unhak96 5년 전
10866번 덱문제 결과값 잘 나오는데 틀렸다고 나오네요. 어디가 문제인지 모르겠네요.
#include <stdio.h>
#include <string.h>
typedef struct _queue
{
int a[10001];
int size;
int cnt;
int front,back;
}Queue;
int main(void)
{
int i;
char a[11];
int n;
int temp;
Queue que;
que.size=1;
que.front=1;
que.back=1;
que.cnt=0;
scanf("%d",&n);
que.size=n+1;
for(i=0;i<n;i++)
{
scanf("%s",a);
if(strcmp(a,"push_front")==0)
{
scanf("%d",&temp);
que.front=(que.front-1)%que.size;
que.a[que.front]=temp;
que.cnt++;
}
else if(strcmp(a,"push_back")==0)
{
scanf("%d",&temp);
que.a[que.back]=temp;
que.back=(que.back+1)%que.size;
que.cnt++;
}
else if(strcmp(a,"pop_front")==0)
{
if(que.cnt==0)
{
printf("-1\n");
}
else
{
printf("%d\n",que.a[que.front]);
que.front=(que.front+1)%que.size;
que.cnt--;
}
}
else if(strcmp(a,"pop_back")==0)
{
if(que.cnt==0)
{
printf("-1\n");
}
else
{
printf("%d\n",que.a[que.back-1]);
que.back=(que.back-1)%que.size;
que.cnt--;
}
}
else if(strcmp(a,"size")==0)
{
printf("%d\n",que.cnt);
}
else if(strcmp(a,"empty")==0)
{
if(que.cnt==0)
{
printf("1\n");
}
else
{
printf("0\n");
}
}
else if(strcmp(a,"front")==0)
{
if(que.cnt==0)
{
printf("-1\n");
}
else
{
printf("%d\n",que.a[que.front]);
}
}
else if(strcmp(a,"back")==0)
{
if(que.cnt==0)
{
printf("-1\n");
}
else
{
printf("%d\n",que.a[que.back-1]);
}
}
}
return 0;
}