2025.07.13
/*
//Q.1935
#include <stdio.h>
int LCA(int a, int b)
{
if (a == b) return a;
if (a > b) return LCA(a / 2, b);
else return LCA(a, b / 2);
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", LCA(a, b));
return 0;
}
*/
/*
//Q.4626
#include<stdio.h>
int main()
{
int N,i,arr[101]={};
int save=0,c=0;
//입력 받기
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d",&arr[i]);
if(arr[i]==1)
{
c++;
save+=c;
}
if(arr[i]==0)
{
c=0;
}
}
printf("%d",save);
return 0;
}
문법 수업 끝
자료구조 (활용)
*/
/**
자료구조 Data Structure
A level - 스택, 큐, 정렬
B level - 이진 탐색, 그래프 (DFS/BFS)
C level - 그리디, 동적 계획법(DP), 백트래킹, 최단경로
*/
//Stack 스택 - 쌓는거, 나중에들어온게 먼저나가는 구조
//Last In First Out -> LIFO 구조
/*
#include<stdio.h>
int stack[10000]={};
int top = 0; // top : 다음에 데이터가 들어갈 위치
void push(int k)
{
stack[top]=k;
top++;
}
void pop()
{
if (top!=0)
{
top--;
}
}
void view()
{
printf("stack -> ");
for(int i=0;i<top;i++)
{
printf("%d ",stack[i]);
}
printf("\n");
}
int main()
{
int n,k;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&k);
// k가 0아니면 push , k가 0이면 pop
if(k!=0)
{
push(k);
}
else
{
pop();
}
view();
}
return 0;
}
*/
/*
//Q.3117
#include<stdio.h>
int stack[100000]={};
int top =0;
void push(int k)
{
stack[top]=k;
top++;
}
void pop()
{
if (top!=0)
{
top--;
}
}
int main()
{
int n,k,f=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&k);
if(k !=0)
{
push(k);
}
else
{
pop();
}
}
for(int i=0;i<top;i++)
{
f=f+stack[i];
}
printf("%d",f);
return 0;
}
*/
#include<stdio.h>
int stack[1000]={};
int top=0;
int pop()
{
if(top !=0)
top--;
return stack[top];
}
int main()
{
int n,i,a;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a);
push(a);
}
while(top!=0)
{
printf("%d",pop());
}
return 0;
}




