💻STUDY/BOJ
[BOJ] 10828. 스택 (Python,C)
- 코딩 초보.
10828. 스택
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- push X: 정수 X를 스택에 넣는 연산이다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 스택에 들어있는 정수의 개수를 출력한다.
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
1. Python
import sys
t=int(sys.stdin.readline())
stack=[]
for _ in range(t):
command=sys.stdin.readline().split()
k=command[0]
if k=="push":
stack.append(command[1])
elif k=="pop":
if len(stack)==0:
print(-1)
else:
print(stack.pop())
elif k=="size":
print(len(stack))
elif k=="empty":
if len(stack)==0:
print(1)
else:
print(0)
elif k=="top":
if len(stack)==0:
print(-1)
else:
print(stack[-1])
처음에 input()을 이용했는데 시간초과가 떠서 뭐지? 하고 찾아봤는데 input()의 경우 시간이 오래걸린다고 해서 sys.stdin.readline() 을 찾아서 이용했다. 그랬더니 시간초과가 걸리지 않고 성공했습니다 가 떴다.
파이썬에서 기본적으로 제공해주는 라이브러리가 많아서 구현은 쉬웠다.
2.C
#include <stdio.h>
#include <string.h>
int numstack[10001];
int count = 0;
void push(int num) {
numstack[count] = num;
count++;
}
void pop() {
if (count != 0) {
count--;
printf("%d\n", numstack[count]);
numstack[count] = 0;
}
else {
printf("%d\n", -1);
}
}
void top() {
if (count != 0) {
printf("%d\n", numstack[count - 1]);
}
else {
printf("%d\n", -1);
}
}
void size() {
printf("%d\n", count);
}
void empty() {
if (count != 0) {
printf("0\n");
}
else {
printf("1\n");
}
}
main() {
int t;
char command[10];
scanf("%d", &t);
for (int i = 0; i < t; i++) {
scanf("%s", &command);
if (strcmp(command, "push") == 0) {
int num;
scanf("%d", &num);
push(num);
}
else if (strcmp(command, "pop") == 0) {
pop();
}
else if (strcmp(command, "top") == 0) {
top();
}
else if (strcmp(command, "size") == 0) {
size();
}
else if (strcmp(command, "empty") == 0) {
empty();
}
}
}
학교에서 c언어 수업때 배웠던 스택과 유사한 구조여서 여러가지 참고하며 공부했다.
복습하는 느낌!
'💻STUDY > BOJ' 카테고리의 다른 글
[BOJ] 11866. 요세푸스 문제 0 (0) | 2022.01.30 |
---|---|
[BOJ] 10845. 큐 (C,Python) (0) | 2022.01.28 |
[BOJ] 10989. 수 정렬하기 (C) (0) | 2022.01.26 |
[BOJ] 1924. 2007년 (Python,C) (0) | 2022.01.25 |
[BOJ] 2751. 수 정렬하기 2 (Python, C) (0) | 2022.01.25 |
댓글