본문 바로가기

programming/algorithm

[algorithm] 백준 10828 - 스택

[algorithm] 백준 10828 - 스택

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 백준 10828번 문제 - 스택 의 풀이를 살펴보도록 하겠습니다.

 

풀이에 사용한 언어는 Python3 입니다.

 

문제 해석과 풀이 다 함께 살펴보시죠.

 

algorithm
알고리즘


백준 BAEKJOON 10828

 

백준 10828번 스택 문제 보러가기

 

반응형

 

문제 해석

 

스택의 기능을 구현하는 문제이다.

총 5개의 기능을 만들어야하는데 기능은 다음과 같습니다. 

push X: 정수 X를 스택에 넣는 연산
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력.
size: 스택에 들어있는 정수의 개수를 출력
empty: 스택이 비어있으면 1, 아니면 0을 출력
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력

 

풀이

 

# 10828 스택

import sys

n = int(sys.stdin.readline())
s=[]

for _ in range(n):
    cmd = sys.stdin.readline().split()

    if cmd[0]=='push':
        s.append(cmd[1])
        
    elif cmd[0]=='pop':
        if len(s)==0:
            print(-1)
        else:
            print(s.pop())
            
    elif cmd[0] == 'size':
        print(len(s))
        
    elif cmd[0] == 'empty':
        if len(s)==0:
            print(1)
        else:
            print(0)
            
    elif cmd[0] == 'top':
        if len(s)==0:
            print(-1)
        else:
            print(s[-1])

 

풀이 해석 및 팁

 

입력값을 읽어들일 때 시간 단축을 위해 sys.stdin.readline()을 사용하고

파이썬의 리스트를 사용해 명령어에 알맞은 스택의 기능을 구현하였습니다.

특히 pop의 경우에는 이미 리스트의 매서드로 존재하므로 유용하게 사용가능합니다.

 


여기까지 백준 10828번 스택 문제 풀이였습니다.


이번 문제의 정답률은 37% 정도입니다.

 

스택의 기능을 직접 구현해보는 큰 어려움 없이 해결 가능한 문제였습니다.

 

궁금하신 점은 댓글로 남겨주시기 바랍니다.

 

감사합니다.

반응형