정구리의 우주정복
[BOJ] 백준 10828번- 스택 파이썬 본문
반응형
10828번 문제 해설 (python으로 풀었다)
**스택이란 ?
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 구조이다.
역순 문자열 만들기, 웹 브라우저에서 뒤로가기, 실행 취소 이러한 것들에서 이용을 한다
1) 문제
push: 정수 x 를 스택에 넣는다 (출력값은 없음)
pop: 스택 가장 위의 정수를 뺀다 (가장위=제일 마지막에 들어온 값, 출력은 가장위의 정수 만약 정수가 없으면 -1)
size: 스택에 있는 정수의 개수 출력
empty: 스택이 비어있으면 1 출력 아니면 0 출력
top: 스택 가장 위의 정수 출력 (없으면 -1 을 출력한다)
2) 풀이
from sys import stdin
num=int(input(""))
lst=[]
def push(num):
lst.append(num)
def pop(): #print last element
if not lst:
print("-1")
else:
print(lst[-1])
del(lst[-1])
def size():
print(len(lst))
def empty():
if not lst:
print("1")
else:
print("0")
def top():
if not lst:
print("-1")
else:
print(lst[-1])
for i in range(num):
command=list(input("").split(" "))
#조작은 command[0] 과 command[1] 로 하면 됨
if command[0]=='push':
push(command[1])
elif command[0]=='pop':
pop()
elif command[0]=='size':
size()
elif command[0]=='empty':
empty()
elif command[0]=='top':
top()
3) 배운점
(1) 리스트의 가장 마지막 원소를 고를땐 lst[-1]
(2) 리스트가 비어있는지 확인하기 위해선
if not 리스트이름 : 을 사용
(3) 입력을 받을때 리스트로 만들어서 입력을 받으면 명령어를 좀 더 다루기 쉬워진다
반응형
'ALGORITHM > SOLVE' 카테고리의 다른 글
[BOJ] 백준 2534 - 별찍기 -13 파이썬 (0) | 2020.04.09 |
---|---|
[BOJ] 백준 5543번 - 상근날드 파이썬 (0) | 2020.04.09 |
[BOJ] 백준 1110번 - 더하기 사이클 파이썬 (이전보다 더 간단) (0) | 2020.04.08 |
[BOJ] 백준 1152번- 단어의 개수 파이썬 (0) | 2019.04.06 |
[BOJ] 백준 1110번 -더하기 사이클 파이썬 (0) | 2019.04.05 |
Comments