10845: 큐
2022. 6. 24. 19:58ㆍC언어/백준
-Class2 : Silver4
https://www.acmicpc.net/problem/10845
-결과
-코드
#include <stdio.h>
#include <string.h>
int main()
{
int n, v;
int top = -1;
int size = 0;
int front = 0;
int back = -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);
back += 1;
stack[back] = v;
}
else if (!strcmp(a, "front")) {
if (front > back) {
printf("-1\n");
}
else {
printf("%d\n", stack[front]);
}
}
else if (!strcmp(a, "back")) {
if (front > back) {
printf("-1\n");
}
else {
printf("%d\n", stack[back]);
}
}
else if (!strcmp(a, "size")) {
if (front > back) {
printf("0\n");
}
else {
printf("%d\n", back - front+1);
}
}
else if (!strcmp(a, "empty")) {
if (front > back) {
printf("1\n");
}
else {
printf("0\n");
}
}
else if (!strcmp(a, "pop")) {
if (front > back) {
printf("-1\n");
}
else {
printf("%d\n", stack[front]);
stack[front] = 0;
front += 1;
}
}
}
}
-풀이
이 문제도 스택을 이용해서 푼다.
top을 -1로 잡고, front는 0으로 back은 -1로 잡고 마찬가지로 top도 -1로 잡는다. (front랑 back을 같은 위치에 두지 않는다)
for문과 if-else문을 이용해서 입력문에 따라 명령문을 출력한다.
'C언어 > 백준' 카테고리의 다른 글
1546: 평균 (0) | 2022.07.09 |
---|---|
10866: 덱 (0) | 2022.06.24 |
10828: 스택 (0) | 2022.06.24 |
10816: 숫자 카드 2 (0) | 2022.06.18 |
2839: 설탕 배달 (0) | 2022.06.18 |