-
[항해99]알고리즘_04sparta/알고리즘 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 - push(data)