ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [항해99]알고리즘_04
    sparta/알고리즘 2021. 6. 18. 21:09

    [Python] 백준 10828 스택

     

       문제분석   

    # 파이썬은 스택 자료구조를 따로 제공하지 않고, 기본 클래스인 리스트나 링크드리스트를 통해 구현한다.

    # 스택 (last In First Out)

    • push(data)
      스택의 가장 최상위(마지막)에 데이터 삽입

    • pop():
      스택의 가장 최상위(마지막)에 데이터 추출 후 스택에서 삭제

    • isEmpty
      스택이 empty 상태인지 여부 반환

    • peek
      스택의 가장 최상위(마지막)에 위치한 데이터 추출
      pop 메서드와는 달리 스택에서 데이터를 삭제하지 않음


    # push X: 정수 X를 스택에 넣는 연산이다.
    # pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력.
    # size: 스택에 들어있는 정수의 개수를 출력한다.
    # empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
    # top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

     

    명령 list로 구현 설명
    push X stack.append(X) list의 append메소드 사용
    pop stack.pop() list의 pop메소드 사용
    size len(stack) list 길이 구하는 len함수 사용
    empty if not stack if not 변수명
    top stack[-1] 마지막 인덱스가 스택의 가장 위에 있는 수

    # 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다.

     

     

       문제풀이   

    import sys
    
    n = int(sys.stdin.readline())
    
    stack = []  # 정수를 저장할 빈 리스트(스택) 초기화
    
    for _ in range(n):  # 주어지는 명령어 수만큼 반복 한다.
        command = sys.stdin.readline().split()
        if command[0] == 'push':
            stack.append(command[1])
    
        elif command[0] == 'pop':
            if not stack:
                print(-1)
            else:
                print(stack.pop())
    
        elif command[0] == 'size':
            print(len(stack))
    
        elif command[0] == 'empty':
            if not stack:
                print(1)
            else:
                print(0)
    
        elif command[0] == 'top':
            if not stack:
                print(-1)
            else:
                print(stack[-1])  

    'sparta > 알고리즘' 카테고리의 다른 글

    [항해99]알고리즘_06  (0) 2021.06.21
    [항해99]알고리즘_05  (0) 2021.06.20
    [항해99]알고리즘_03  (0) 2021.06.17
    [항해99]알고리즘_02  (0) 2021.06.16
    [항해99]알고리즘_01  (0) 2021.06.16

    댓글

Designed by Tistory.