10828: 스택
2022. 6. 24. 19:44ㆍC언어/백준
-Class2 : Silver4
https://www.acmicpc.net/problem/10828
-결과
-코드
#include <stdio.h>
#include <string.h>
int main()
{
int n, v;
int top = -1;
int stack[15000];
char a[20];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", a);
//printf("str: %s\n", a);
if (!strcmp(a, "push")) {
scanf("%d", &v);
top += 1;
stack[top] = v;
}
else if (!strcmp(a, "pop")) {
if (top == -1) {
printf("-1\n");
}
else {
printf("%d\n", stack[top]);
stack[top] = 0;
top -= 1;
}
}
else if (!strcmp(a, "size")) {
printf("%d\n", top+1);
}
else if (!strcmp(a, "empty")) {
printf("%d\n", top == -1);
}
else if (!strcmp(a, "top")) {
if (top == -1) {
printf("-1\n");
}
else {
printf("%d\n", stack[top]);
}
}
}
}
-풀이
이 문제는 스택을 이용해서 푸는 문제이다.
시작할 때 top을 -1로 가정하고, 명령의 수인 N이 10000이하이므로 스택의 크기를 15000으로 잡는다.
for문으로 반복해서 명령문을 입력받고 if-else문을 이용해서 명령을 처리한다.
'C언어 > 백준' 카테고리의 다른 글
10866: 덱 (0) | 2022.06.24 |
---|---|
10845: 큐 (0) | 2022.06.24 |
10816: 숫자 카드 2 (0) | 2022.06.18 |
2839: 설탕 배달 (0) | 2022.06.18 |
11866: 요세푸스 문제 0 (0) | 2022.06.17 |