정구리의 우주정복

[BOJ] 백준 10828번- 스택 파이썬 본문

ALGORITHM/SOLVE

[BOJ] 백준 10828번- 스택 파이썬

Jungry_ 2019. 4. 9. 11:20
반응형

10828번 문제 해설 (python으로 풀었다)

 

**스택이란 ? 

한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 구조이다.

역순 문자열 만들기, 웹 브라우저에서 뒤로가기, 실행 취소 이러한 것들에서 이용을 한다

 

1) 문제

10828- 스택

 

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) 입력을 받을때 리스트로 만들어서 입력을 받으면 명령어를 좀 더 다루기 쉬워진다 

 

반응형
Comments