deok0726   5년 전

ㅓ가 문제일까요...예제는 다 통과합니다ㅜ

jh05013   5년 전

4
push_front 1
push_front 2
pop_back
pop_front

deok0726   5년 전

ㅁ사합니다!!

deok0726   5년 전

#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");
 
}

주석처리해서 반례 해결했는데도 틀리네요ㅠㅠ


jh05013   5년 전

지금 보니 첫 번째 코드 예제도 안 돌아가는데요?

https://ideone.com/jhtAmx

jh05013   5년 전

두 번째 코드도 마찬가지입니다.

https://ideone.com/aOpZUZ

kimsy96   5년 전

1 2 3 을 push_back 하고

하나씩 pop_front하면 

1하나만 나오고 -1이 출력됩니다

빼내는 연산의 구현이 좀 이상해보입니다 

deok0726   5년 전

아아 그렇네요ㅠㅜ pop에만 신경쓰느라 정작 front랑 back에서 틀린 줄을 몰랐네요ㅜ 그래서 다 뜯어고치고 말씀하신 반례랑 예제 다시 돌려서 값이 다 나오는데 그래도 틀립니다 으아아ㅏㅠㅜㅠㅜ

jh05013   5년 전

3
push_front 1
pop_back
pop_front

두 개의 반례를 만들 때 위의 코드를 전혀 읽지 않았습니다. 그냥 아무거나 집어넣었습니다. 그런데도 반례가 나온다는 것은 질문자분도 아무거나 집어넣음으로써 반례를 쉽게 찾을 수 있다는 뜻입니다.

deok0726   5년 전

.답변 감사합니다!ㅜㅜ

계속 생각해봐야겠네요ㅠㅜㅜㅠ



댓글을 작성하려면 로그인해야 합니다.