정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- push X: 정수 X를 스택에 넣는 연산이다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 스택에 들어있는 정수의 개수를 출력한다.
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
import sys
N=int(sys.stdin.readline())
stack=[]
for _ in range(N):
line=sys.stdin.readline().split()
if(line[0]=="push"):
stack.append(line[1])
if(line[0]=="pop"):
if(len(stack)==0):
print(-1)
else:
print(stack[len(stack)-1])
stack.pop()
if(line[0]=="size"):
print(len(stack))
if(line[0]=="empty"):
if(len(stack)==0):
print(1)
else:
print(0)
if(line[0]=="top"):
if(len(stack)==0):
print(-1)
else:
print(stack[len(stack)-1])
※ 스택
● 먼저 주어지는 명령의 수 N을 입력받아 준 후, 빈 배열 stack을 선언해준다.
● for문은 총 N번 돌게 된다.
- 입력 받은 line[0]이 "push" 와 같을 경우:
-> line[1] 에 들어있는 숫자를 stack 에 append 해준다.
- 입력 받은 line[0]이 "pop" 과 같을 경우:
-> stack의 길이가 0이면 -1을 출력해주고 길이가 0이 아니면 stack의 가장 끝 원소 stack[len(stack)-1] 을 출력해준 뒤 이를 pop() 함수를 이용하여 stack에서 제거해준다.
- 입력 받은 line[0]이 "size" 와 같을 경우:
-> stack배열의 길이 len(stack)을 출력해준다.
- 입력 받은 line[0]이 "empty" 와 같을 경우:
-> stack의 길이가 0이면 1을 출력해주고 길이가 0이 아니면 0을 출력해준다.
- 입력 받은 line[0]이 "top" 과 같을 경우:
-> stack의 길이가 0이면 -1을 출력해주고 아니면 stack의 가장 끝 원소 stack[len(stack)-1] 을 출력해준다.
♣ 참고 - 스택이란?
https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D
스택 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은
ko.wikipedia.org
'백준(baekjoon) > 실버' 카테고리의 다른 글
백준(baekjoon) 18258번: 큐 2(실버 4, 파이썬 PYTHON) - 큐,덱 (0) | 2022.11.28 |
---|---|
백준(baekjoon) 1874번: 스택 수열(실버 2, 파이썬 PYTHON) - 스택 (0) | 2022.11.23 |
백준(baekjoon) 13305번: 주유소(실버 3, 파이썬 PYTHON) - 그리디 알고리즘 (0) | 2022.11.22 |
백준(baekjoon) 11399번: ATM(실버 4, 파이썬 PYTHON) - 그리디 알고리즘 (0) | 2022.11.21 |
백준(baekjoon) 1931번: 회의실 배정(실버 1, 파이썬 PYTHON) - 그리디 알고리즘 (0) | 2022.11.21 |