알고리즘/백준[baekjoon]

[baekjoon] 10828번 : 스택 (by python 파이썬)

코딩하는이씨 2022. 3. 24. 22:58
728x90
반응형

https://www.acmicpc.net/problem/10828

 

10828번: 스택

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

www.acmicpc.net

 

code

import sys
input = sys.stdin.readline

n = int(input())
a = []
for _ in range(n):
    do = input().split()
    if do[0] == 'push':
        a.append(do[1])
    elif do[0] == 'pop':
        if len(a) == 0:
            print(-1)
        else:
            print(a.pop())
    elif do[0] == 'size':
        print(len(a))
    elif do[0] == 'empty':
        if len(a) == 0:
            print(1)
        else:
            print(0)

    elif do[0] == 'top':
        if len(a) == 0:
            print(-1)
        else:

            print(a[len(a)-1])

 

이번문제는 스택을 구현하면되는데,

파이썬에는 스택을 따로 제공하지 않는다.

 

그래서 이 문제를 풀려면 리스트를 이용해 스택을 흉내내서 풀면된다.

 

문자열을 입력받고 해당 명령어가 있으면 그에 해당하는 행동을 한다.

 

리스트의 append나 pop을 알고있다면 간단하게 해결이 된다.

 

append함수는 리스트 제일 끝에 값을 추가함으로 push연산을 할 수 있고

pop은 끝에 있는 함수를 제거하고 값을 저장함으로 pop그대로 사용할 수 있다.

 

728x90
반응형