/*
#include<stdio.h>
#include<string.h>
int stack[102]={},top=-1;
int main()
{
int x=0,sr,st,i;
char str[102]={}, stt[101]={};
gets(str);
gets(stt);
sr=strlen(str)-1;
st=strlen(stt)-1;
for(;;)
{
int a = 0;
int b= 0;
if(sr<0&&st<0&&a+b+x==0)
{
stack[top+1]=0;
break;
}
if(sr>=0)
{
a = str[sr--]-'0';
}
if(st>=0)
{
b = stt[st--]-'0';
}
stack[++top]=(a+b+x)%10;
x=(a+b+x)/10;
}
while(top != -1)
{
printf("%d",stack[top--]);
}
return 0;
}*/
/**
#include <stdio.h>
int stack[50]={};
int top=-1;
void push(int data)
{
top++;
}
int pop()
{
if(top==-1) return ;
top--;
}
-------------------------
int queue[50]={};
int front=-1, back=-1;
void push(int data)
{
back++;
}
int pop()
{
if(back==front) return ;
front++;
}
*/
/*
#include<stdio.h>
#include<string.h>
int queue[201]={};
int f=-1;
int b=-1;
void push(int data)
{
queue[++b]=data;
}
void front()
{
if(f==b)
{
printf("-1\n");
}
else
{
printf("%d\n",queue[f+1]);
}
}
void back()
{
if(f==b)
{
printf("-1\n");
}
else
{
printf("%d\n",queue[b]);
}
}
void pop()
{
if(f!=b)
{
f++;
}
}
void size()
{
printf("%d\n",b-f);
}
void empty()
{
if(f==b)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
int main()
{
int x,y,i;
char z[10]={};
scanf("%d",&x);
for(i=0; i<x; i++)
{
scanf("%s",z);
if(z[1]=='u')
{
scanf("%d )",&y);
push(y);
}
else if(z[0]=='f')
{
front();
}
else if(z[0]=='b')
{
back();
}
else if(z[0]=='p')
{
pop();
}
else if(z[0]=='s')
{
size();
}
else if(z[0]=='e')
{
empty();
}
}
return 0;
}
easy but slow >> 버블(코드가가장간단), 선택(인간적), 삽입(정렬이어느정도되어있을때,빠르다)
hard but fast >> 퀵, 병합(merge), 힙, 기수 , ....
1. 버블정렬기본 (인접한 두 원소 비교, swap)
2. 버블정렬-개선
*/