알고리즘 - Stack (스택) & Queue (큐)

Alope·2025년 1월 19일

알고리즘

목록 보기
2/5
post-thumbnail

Stack (스택)

  • 가장 늦게 들어온 것이 가장 먼저 나가는 자료 구조

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

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

num = int(input())
stack = []

for _ in range(num):
    command = input().strip().split()  # 명령어 입력받기

    if command[0] == 'push':
        stack.append(int(command[1])) # append 중요
    elif command[0] == 'pop':
        if len(stack) > 0: #len(stack)
            print(stack.pop()) # pop 사용하기
        else:
            print('-1')
    elif command[0] == 'size':
        print(len(stack))
    elif command[0] == 'empty':
        if len(stack) > 0:
            print('0')
        else:
            print('1') # 비어있단 뜻
    elif command[0] == 'top':
        if len(stack) > 0:
            print(stack[-1]) # 제일 위
        else:
            print('-1')

Queue (큐)

  • 가장 먼저 들어온 것이 가장 먼저 나가는 자료 구조

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

  • push X: 정수 X를 큐에 넣는 연산이다.
  • pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 큐에 들어있는 정수의 개수를 출력한다.
  • empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
  • front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
from collections import deque
import sys
input = sys.stdin.readline

number = int(input())
queue = deque() # deque 사용

for i in range(number):
    command = input().strip().split()

    if command[0] == 'push':
        queue.append(int(command[1]))
    elif command[0] == 'pop':
        if len(queue) > 0:
            print(queue.popleft()) # 첫 번째 요소를 제거 -> FIFO
        else:
            print('-1')
    elif command[0] == 'size':
        print(len(queue))
    elif command[0] == 'empty':
        if len(queue) > 0:
            print('0')
        else:
            print('1')
    elif command[0] == 'front':
        if len(queue) > 0:
            print(queue[0])
        else:
            print('-1')
    elif command[0] == 'back':
        if len(queue) > 0:
            print(queue[-1])
        else:
            print('-1')
profile
성장하는 컴공생

0개의 댓글