10828: 스택
2022. 6. 24. 19:44ㆍC언어/백준
-Class2 : Silver4
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
-결과

-코드
#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 |