/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include <stdio.h>
int memo[100008]={}; -------3713 관계기반설계 블럭채우기 3
int rec(int n)
{
if(memo[n]!=0) return memo[n];
if(n==1) return memo[n]=1;
if(n==2) return memo[n]=3;
if(n%2==0)
{
return memo[n]=(2*rec(n-1)+1)%100007;
}
else
{
return memo[n]=(2*rec(n-1)-1)%100007;
}
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",rec(n));
return 0;
}
1 1
2 3
3 5
4 11 -----짝수는 이전 거 2배에서 +1, 홀수는 이전 거 2배에서 -1
5 21
6 43
#include <stdio.h>//탑이 일단 ( 인 순간 배드. 그게 아니면 짝이 맞아야 한다.
#define SIZE 50000
char stack[SIZE];
int top=-1;
void push(char data)
{
if(top==SIZE-1)
return ;
stack[++top]=data; --3129 스택 올바른 괄호 2
}
int main()
{
char a[50001]= {};
int i,n,cnt=0,cmt=0;
scanf("%s",a);
for(i=0; a[i]!=NULL; i++)
{
if(a[i]=='(')
{
cnt++;
}
else
{
cmt++;
}
if(cnt<cmt)
{
printf("bad");
return 0;
}
else
{
push(a[i]); --개수가 안 맞을때만 스택
}
}
if(cnt!=cmt) ----마지막에도 맞는지 아닌지 확인
{
printf("bad");
return 0;
}
if(stack[top]=='(') --일단 탑이 ( 이면 무조건 아님
printf("bad");
else
printf("good"); ---그게 아니고 스택의 개수도 맞으면 무조건 good
return 0;
}
*/
/*
#include <stdio.h>//탑이 일단 ( 인 순간 배드. 그게 아니면 짝이 맞아야 한다.
#define SIZE 50000
int top=0; // top은 현재 입력된 ( 의 갯수
int main()
{
char a[50001]= {};
int i,n,cnt=0,cmt=0;
scanf("%s",a);
for(i=0; a[i]!=NULL; i++)
{
if(a[i]=='(')
{
top++; ---top의 개수로 top이 끝에 0이 되면 순서에 맞게 잘 들어간 거니까 good이 됨.
}
else
{
if(top==0)
{
printf("bad");
return 0;
}
top--;
}
}
if(top>0) --일단 탑이 ( 이면 무조건 아님
printf("bad");
else
printf("good"); ---그게 아니고 스택의 개수도 맞으면 무조건 good
return 0;
}
*/
#include <stdio.h>
#define SIZE 200
int stack[SIZE];
int top=-1;
void push(int data)
{
if(top==SIZE-1)
return ;
stack[++top]=data;
}
int pop()
{
if(top==-1)
return -100;
return stack[top--];
}
int main()
{
int n,x;
char str[50];
scanf("%d\n",&n);
for(int i=0;i<n;i++)
{
gets(str);
if(str[0]=='p'&&str[1]=='u')
{
x=0;
for(int j=6;str[j]!=' ';j++)
{
x=x*10+(str[j]-'0');
}
push(x);
}
else if(str[0]=='p'&&str[1]=='o') ---3102 스택 STL stack
{
pop();
}
else if(str[0]=='t')
{
if(top==-1)
{
printf("-1\n");
}
else
{
printf("%d\n",stack[top]);
}
}
else if(str[0]=='s')
{
printf("%d\n",top+1);
}
else
{
if(top==-1)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
}
return 0;
}