https://www.acmicpc.net/problem/10828
<문제 해설>
first in last out인 스택을 구현하면된다. 배열을 만들고 배열에서 값을 넣고 빼고 길이를 출력하면 된다.
<예시>
입력 : push 1 push 2 top size empty pop pop pop size empty pop push 3 empty top
출력값 : 2 2 0 2 1 -1 0 1 -1 0 3
<코드>
import sys
N = int(sys.stdin.readline())
stack =[]
for i in range(N):
command = sys.stdin.readline().split()
if command[0] == 'push':
stack.append(int(command[1]))
elif command[0] == 'pop':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
del stack[-1]
elif command[0] == 'size':
print(len(stack))
elif command[0] == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif command[0] == 'top':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
<코드 설명>
import sys //sys를 사용하기 위한 import
N = int(sys.stdin.readline()) //N값 받아오기
stack =[] //stack으로 사용할 배열
for i in range(N): //N만큼 반복해서
command = sys.stdin.readline().split() //command받아오기
if command[0] == 'push': //스택에 넣기라면
stack.append(int(command[1])) //push뒤에 정수를 stack에 넣기
elif command[0] == 'pop': //스택에서 빼기라면
if len(stack) == 0: //스택이 비었다면
print(-1) //-1출력
else: //스택이 있다면
print(stack[-1]) //스택의 마지막을 출력
del stack[-1] //스택의 마지막을 제거
elif command[0] == 'size': //크기를 명령받으면
print(len(stack)) //stack의 길이 출력
elif command[0] == 'empty': //비었는지 확인하라 하면
if len(stack) == 0: //스택길이가 0이면 빈거니 1출력
print(1)
else: //스택이 비지 않았으면 0출력
print(0)
elif command[0] == 'top': //꼭대기에있는 걸 출력하라는 명령
if len(stack) == 0: //비었으면 -1출력
print(-1)
else:
print(stack[-1]) //안비었으면 스택의 마지막 출력
'Coding Test > Python' 카테고리의 다른 글
[Python/백준] 1978 소수 찾기 (1) | 2023.01.12 |
---|---|
[Python/백준] 10845 큐 (0) | 2023.01.12 |
[Python/백준] 2869 달팽이는 올라가고 싶다 (1) | 2023.01.11 |
[Python/백준] 5430 AC (0) | 2023.01.11 |
[Python/백준] 10815 숫자 카드 (0) | 2023.01.09 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간