문제
- Python으로 Stack 짜기
- Stack의 명령어를 입력받은 대로 출력하면 된다.
해설 및 코드
- 시간 초과가 제일 큰 벽이었다.
- 이전 input 대신 버퍼를 읽는 sys를 선언하여, 시간 초과를 잡을 수 있었다.
- Python에서 stack은 List로 대신할 수 있다.
# 시간 초과를 해결하기 위한 sys 선언
import sys
N = int(sys.stdin.readline().rstrip())
# python은 list로 stack을 흉내 낼 수 있음
stack = []
# 0부터 N-1까지 반복
for _ in range(N):
# push의 경우는 두 개의 명령어가 필요하므로 list 형식으로 받는다.
cmd = list(sys.stdin.readline().rstrip().split())
# python은 switch문이 존재하지 않는다.
# 헷갈렸던 것, if 문에 아무리 한줄이라도 python은 : 을 붙여줘야 한다.
if cmd[0] == "push":
stack.append(cmd[1])
elif cmd[0] == "pop":
if len(stack) != 0:
print(stack.pop())
else:
print(-1)
elif cmd[0] == "size":
print(len(stack))
elif cmd[0] == "empty":
# 0 if stack else 1
# 이렇게 써도 동일하게 작동한다
if len(stack) == 0:
print(1)
else:
print(0)
elif cmd[0] == "top":
# stack[-1] if stack else -1
if len(stack) != 0:
# 리스트의 맨 뒤의 숫자 가져올 때 -1을 해주면 됨
print(stack[-1])
else:
print(-1)
# list에 아무런 원소가 없으면 not list, if list 등으로 존재 여부를 확인할 수 있다.
Python에서 Stack 이용하기
- stack은 list로 선언
- push = list.append()
- pop = list.pop()
- isEmpty = 0 if list else 1
- size = len(list)
- top = list[-1]
Python 문법 정리
- System에서 입력 받아오기
- input() 보다 빠르다.
N = sys.stdin.readline().rstrip()
- list 선언
list = []
- list 추가
list.append("추가")
- list 길이
len(list)
- 맨 뒤의 list 값 가져오기
list[-1]
- 간단한 if else 문장 만들기
"if에 맞으면 나오는 문구" if "조건" else "조건에 충족하지 않으면 나오는 문구"
- Python은 switch 문이 존재하지 않는다.
'IT > 알고리즘' 카테고리의 다른 글
[백준] 보물 1026.python (0) | 2021.02.09 |
---|---|
[백준] 에디터 1406.python (0) | 2021.02.07 |
[백준] 덱 10866.python (0) | 2021.02.07 |
[백준] 큐 10845.python (0) | 2021.02.04 |
[백준] 수찾기 1920.python (0) | 2021.01.28 |