티스토리 뷰

파이썬/파이썬 문제

10828 - 스택

백수진 2021. 3. 21. 01:16

www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

스택을 구현할 때, class사용해도 좋지만 지금은 복잡한 문제가 아니기 때문에 class는 사용하지 않았다.

 

1. push()에 대해

c언어에서는 top변수를 사용했지만 python은 .append()를 사용해서 리스트에 추가할 수 있다.

2. pop()에 대해

c언어에서는 top변수를 줄여가며 사용했지만 python은 del stack[-1]로 가장 마지막에 있는 원소를 지울 수 있고 return만 하고 싶을 때는 stack[-1]을 return해주면 쉽다

3. stack의 size에 대해

c언어에서는 top변수를 활용해 top이 0의 위치부터 시작됐다면 top 값이 size가 됐다면 python에서는 len.stack[]을 활용해 사이즈를 쉽게 구할 수 있다.

 


n = int(input())
print(n)
stack = []

def push(a):
    stack.append(a)

a = "push"
b = "pop"
c = "size"
d = "empty"
e = "top"

for i in range(0,n):
    print("입력순서 : %d" %i,end = '')
    s = input()
    if s==a:
        t = int(input())
        print("!!!")
        push(t)
    if s==b:
        if(len(stack)<1):
            print("-1")
        else:
            print("%d" %stack[-1])
            del stack[-1]
    if s==c:
        print("%d" %len(stack))
    if s==d:
        if(len(stack)<1):
            print("1")
        else:
            print("0")
    if s==e:
        if(len(stack)<1):
            print("-1")
        else:
            print(stack[-1])


        

        

'파이썬 > 파이썬 문제' 카테고리의 다른 글

11053 - 가장 긴 증가하는 부분수열  (0) 2021.03.24
1966 - queue활용  (0) 2021.03.22
15649 - n과m(1)  (0) 2021.03.18
백준 재귀함수  (0) 2021.03.16
백준 2562 - 최댓값  (0) 2021.03.11