코딩테스트/백준

[백준][Python] 10828. 스택

내만 2022. 8. 23. 19:49
728x90
반응형

반응형

 

 

 

 

 

 

🙆‍♂️문제


 

🙋‍♂️풀이


 

 

🚀 입력받기


import sys
n = int(sys.stdin.readline())
com = [list(sys.stdin.readline().split()) for _ in range(n)]

시간 제한이 있어서 sys.stdin.readline()으로 입력을 받아야 합니다.

명령어 수와 명령어들을 입력받습니다.

 

🚀 문제 풀이 핵심 & 출력


stack=[]
for i in com:
    arrLen = len(stack)
    if i[0] == 'push':
        stack.append(i[1])
    elif i[0] == 'pop':
        if arrLen==0:
            print(-1)
        else:
            print(stack[arrLen-1])
            stack.pop(arrLen-1)
    elif i[0] == 'size':
        print(arrLen)
    elif i[0] == 'empty':
        if arrLen==0:
            print(1)
        else:
            print(0)
    elif i[0] == 'top':
        if arrLen==0:
            print(-1)
        else:
            print(stack[arrLen-1])

stack 리스트를 선언해서 stack처럼 사용합니다.

반복문을 사용하여 명령어들을 수행합니다.

    if i[0] == 'push':
        stack.append(i[1])

push 명령어는 간단하게 stack 리스트에 append 합니다.

 

    elif i[0] == 'pop':
        if arrLen==0:
            print(-1)
        else:
            print(stack[arrLen-1])
            stack.pop(arrLen-1)

pop 명령어는 리스트의 마지막 값을 제거합니다.

그래서 위에서 선언했던 리스트의 길이 - 1 번째 인덱스 값을 출력하고 삭제합니다.

리스트 길이가 0이라면 -1을 출력합니다.

 

    elif i[0] == 'size':
        print(arrLen)

스택의 정수 개수는 길이와 같기 때문에 리스트 길이를 출력합니다.

 

    elif i[0] == 'empty':
        if arrLen==0:
            print(1)
        else:
            print(0)

리스트의 길이가 0이라면 스택에 값이 없는 것이므로 1을 출력하고 아니면 0을 출력합니다.

 

    elif i[0] == 'top':
        if arrLen==0:
            print(-1)
        else:
            print(stack[arrLen-1])

스택 맨 위의 값을 출력하는 것으로 리스트의 가장 마지막 값을 출력합니다.

 

728x90

728x90
반응형