Python 자료구조: stack

On a regular basis·2021년 9월 26일
0
post-thumbnail

stack

  • 스택(stack)은 삽입과 삭제가 저장소의 맨 윗에서만 일어나는, 즉 제한적으로 접근할 수 있는 나열 구조이다.
  • 접근 방법은 언제나 목록의 끝에서만 일어나 끝먼저내기 목록(Pushdown list)이라고도 한다.
  • 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다. 나중에 넣은 값이 먼저 나오는 것을 LIFO 구조라고 한다.
  • 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 한다.

  • 스텍의 활용예시
    웹 브라우저의 방문기록 (뒤로가기)
    실행 취소 (가장 나중에 실행된 명령부터 취소)
    역순 문자열 만들기 (가장 나중에 입력된 문자열부터 출력)
    재귀 알고리즘에서 유용하게 사용
    하노이의탑(유명한 알고리즘)


✍️ 내풀이

import sys
n = int(sys.stdin.readline())
stack=[]
for _ in range(n):
    word = sys.stdin.readline().split()
    if word[0] == "push":
        stack.append(word[1])
    elif word[0] == "pop":
        if len(stack) == 0:
            print(-1)
        else:
            print(stack.pop())
    elif word[0] == "size":
        print(len(stack))
    elif word[0] == "empty":
        if len(stack) == 0:
            print(-1)
        else:
            print(0)
    elif word[0] == "top":
        if len(stack) ==0:
            print(-1)
        else:
            print(stack[-1])
  • 런타임 에러만 자꾸 뜬다. 어느부분이 문제일까!! 내일 다시 시도해봐야지!!!....😡
profile
개발 기록

0개의 댓글