자료구조의 첫 번째인 스택을 구현하는 문제입니다.

 

스택은 Last In First Out으로, 나중에 들어오는 값이 먼저 출력된다는 뜻입니다. (줄여서 LIFO - 후입 선출 이라고도 합니다.)

 

문제를 그대로 따라가면 풀리는데 문제는 input()을 그대로 사용하면 시간 초과 문제가 발생합니다.

 

따라서, 조금 더 시간을 적게 소모하는 sys.stdin.readline을 사용하여 input을 재정의하면 시간 초과가 발생하지 않습니다.

 

import sys
input = sys.stdin.readline    # 시간 초과 error를 해결하기 위한 input함수 재정의

rep_num = int(input())    # 명령어 개수 입력
stack = []    # stack list

for _ in range(rep_num):    # 명령어 개수만큼 반복
    command = input()    # 명령어 한 줄 입력
    if "push" in command:    # 명령어가 push라면
        stack.append(int(command.split(" ")[1]))    # 공백을 기준으로 split 한 후, 1번 인덱스 값을 int로 변환하여 stack에 저장
    elif "pop" in command:    # 명령어가 pop라면
        if len(stack) == 0:    # 빈 stack이라면 -1 출력
            print(f"{-1}")
        else:    # 빈 stack이 아니라면 stack의 마지막 값 추출 및 출력
            print(stack.pop())
    elif "size" in command:    # 명령어가 size라면
        print(len(stack))    # stack의 크기 출력
    elif "empty" in command:    # 명령어가 empty라면
        if len(stack) == 0:    # 빈 stack이라면 1 출력
            print(f"{1}")
        else:    # 빈 stack이 아니라면 0 출력
            print(f"{0}")
    else:    # 명령어가 top라면
        if len(stack) == 0:    # 빈 stack이라면 -1 출력
            print(f"{-1}")
        else:    # 빈 stack이 아니라면 stack의 마지막 값 출력
            print(stack[-1])

 

'Algorithm Test > BaekJoon' 카테고리의 다른 글

BaekJoon 10845 - 큐 (Python)  (0) 2022.02.28
BaekJoon 1406 - 에디터 (Python)  (0) 2022.02.25
BaekJoon 1847 - 스택 수열  (0) 2022.02.24
BaekJoon 9012 - 괄호  (0) 2022.02.23
BaekJoon 9093 - 단어 뒤집기  (0) 2022.02.22

+ Recent posts