Coding Test/Algorithm #Python3

[백준] 정수 저장 및 명령 처리 프로그램 #스택 #알고리즘

harrym8n 2025. 3. 27. 14:10

문제 바로가기 👉 백준 10828번


☑️  문제 요약

정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 작성

명령 종류

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

 

☑️  KEY 포인트

  1. 문제 풀이 과정을 먼저 생각한다.
    • 먼저 몇 개의 명령이 입력될 건지 입력받는다.
    • 입력받은 명령의 수 만큼 명령을 입력 받는다.
    • 명령 하나를 입력받을 때, 위 '명령 종류'의 각 케이스에 대한 결과값을 반환한다. 
  2. 위 과정을 코드로 구현한다.
    • 스택은 리스트([])를 통해 구현한다.
    • if~elif~else 문을 통해서 명령 종류를 구분한다.
    • 반복문을 통해 처음에 입력받은 명령의 개수 만큼 명령을 입력받도록 구현한다.
  3. 실패했던 코드
    • 원인 : 반복문 내에서 input()를 통해 입력을 받으니 성능이 저하되어 시간이 초과되었다.
    • sys.stdin.readline()을 통해 입력 받으면 시간이 단축된다.
ls = []
num1 = int(input())

for i in range(num1):
    order = input()
    order_info = order.split()
    if order_info[0] == 'push':
        ls.insert(0, order_info[1])
    elif order_info[0] == 'pop':
        if len(ls) > 0: 
            print(ls[0])
            ls = ls[1:]
        else: 
            print(-1)
    elif order_info[0] == 'size':
        print(len(ls))
    elif order_info[0] == 'empty':
        if len(ls) == 0 : print(1)
        else : print(0)
    elif order_info[0] == 'top':
        if len(ls) > 0: 
            print(ls[0])
        else: 
            print(-1)

 

☑️  해결 코드

import sys 

ls = []
num1 = int(input())

for i in range(num1):
	# sys.stdin.readline()을 통해 입력받기
    order = sys.stdin.readline().rstrip()
    order_info = order.split()
    if order_info[0] == 'push':
        ls.insert(0, order_info[1])
    elif order_info[0] == 'pop':
        if len(ls) > 0: 
            print(ls[0])
            ls = ls[1:]
        else: 
            print(-1)
    elif order_info[0] == 'size':
        print(len(ls))
    elif order_info[0] == 'empty':
        if len(ls) == 0 : print(1)
        else : print(0)
    elif order_info[0] == 'top':
        if len(ls) > 0: 
            print(ls[0])
        else: 
            print(-1)