스택(백준 10828번)
문제
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- push X: 정수 X를 스택에 넣는 연산이다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 스택에 들어있는 정수의 개수를 출력한다.
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
N=int(input())
my_stack=[]
for i in range(N):
com=sys.stdin.readline().strip()
if com.startswith('push'):
my_stack.append(int(com.split()[-1]))
elif com=='top':
if len(my_stack):
print(my_stack[-1])
else:
print(-1)
elif com=='size':
print(len(my_stack))
elif com=='pop':
if len(my_stack):
print(my_stack.pop())
else:
print(-1)
elif com=='empty':
if len(my_stack):
print(0)
else:
print(1)
for문을 사용할 때, 입력을
input()
으로 받으면 ‘시간초과’input() 은 매개변수로 prompt message를 받고, 출력함.
입력받은 값의 ‘\n(개행 문자)’을 삭제시키고 반환함.
sys.stdin.readline()
을 사용하여 해결 가능- 문자열을 입력으로 받음.
- ‘\n(개행 문자)’을 같이 입력으로 받음.
sys.stdin.readline()
을 통해 입력 받은 값에strip()
을 사용하면 ‘\n’없이 입력 받을 수 있음N=sys.stdin.readline().strip()
strip()
은 문자열 양 옆의 ‘\n’, ‘\t’를 업애준다.
추가적인 문법
- 리스트 함수
- index(x) 함수는 리스트에 x 값이 있으면 x의 인덱스 값(위칫값)을 리턴
- insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수
- remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수
- pop()은 리스트의 맨 마지막 요소를 리턴하고 그 요소는 삭제
- pop(x)는 리스트의 x번째 요소를 리턴하고 그 요소는 삭제
- count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 리턴하는 함수
- extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더함
This post is licensed under CC BY 4.0 by the author.