(class 2)
#include<stdio.h>
#include<string.h>
int arr[10000];
int i = 0;
void push(int n) {
arr[i] = n;
i++;
}
void pop() {
if (i != 0) {
i--;
printf("%d\n", arr[i]);
arr[i] = 0;
}
else {
printf("-1\n");
}
}
void size() {
printf("%d\n", i);
}
void empty() {
if (i != 0) {
printf("0\n");
}
else {
printf("1\n");
}
}
void top() {
if (i != 0) {
printf("%d\n", arr[i - 1]);
}
else {
printf("-1\n");
}
}
int main()
{
int num, j;
char word[10];
scanf("%d", &num);
for (j = 0; j < num; j++) {
scanf("%s", &word);
if (!strcmp(word, "push")) {
int data;
scanf("%d\n", &data);
push(data);
}
else if (!strcmp(word, "pop")) {
pop();
}
else if (!strcmp(word, "size")) {
size();
}
else if (!strcmp(word, "empty")) {
empty();
}
else if (!strcmp(word, "top")) {
top();
}
}
return 0;
}
<코드 설명>
전역변수로 배열 arr와 인덱스인 i를 선언해주었다.
- push 함수 : arr[i]에 함수 인자값을 넣어주고 인덱스인 i를 1 증가시켜준다.
- pop 함수 : 인덱스가 0이 아닐 경우, i를 1 감소시켜주고 arr[i]를 출력시키며 해당 값을 0으로 만들어준다. 인덱스가 0일경우에는 -1을 출력시켜준다.
- size 함수 : 인덱스인 i를 출력시킨다.
- empty 함수 : 인덱스가 0이 아닐 경우, 0을 출력시켜준다. 인덱스가 0일 경우에는 1을 출력시켜준다.
- top 함수 : 인덱스가 0이 아닐 경우, arr[i-1]을 출력시켜준다. 인덱스가 0일 경우 -1을 출력시켜준다.
수행시킬 명령문의 개수인 num을 입력받고 그만큼 for문을 통해 반복시켜주었다. for문 내에서 수행할 명령인 word를 입력받았으며, strcmp함수로 word와 각 수행문의 문자가 동일한지 확인해준 후, 동일할 경우 해당 함수를 실행시켜주었다.
<실행 결과>
'Algorithm > BOJ' 카테고리의 다른 글
[BoJ] 4673 셀프 넘버 (0) | 2022.04.03 |
---|---|
[BOJ] 1929 소수 구하기 (0) | 2022.04.02 |
[SISS] C 백준 8주차 (11720, 1085, 10250) (0) | 2022.02.14 |
[SISS] C 백준 7주차 (10809, 10818, 10871) (0) | 2022.02.08 |
[SISS] C 백준 6주차 (2908, 2920, 3052) (0) | 2022.02.01 |