본문 바로가기
코딩테스트/파이썬

[백준] [파이썬/Python] 10845번 : 큐 풀이 / pop함수, queue 설명

by JI NY 2023. 2. 17.

 

[백준] [파이썬/Python] 10845번 : 큐 풀이

10845번: 큐 (acmicpc.net)

문제

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

명령은 총 여섯 가지이다.

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

 

입력

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.

 

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

 


코드

import sys
from sys import stdin

queue = []

def push(x) :
    queue.append(x)

# pop(x)는 리스트의 x번째 요소를 리턴하고 그 요소는 삭제
def pop():
    if(len(queue) == 0):
        print(-1)   
    else:
        print(queue.pop(0))

def size():
    print(len(queue))

def empty():
    if(len(queue) == 0):
        print(1)
    else:
        print(0)

def front(): ## 가장 앞에 있는 정수(먼저 들어온)
    if(len(queue)==0):
        print(-1)
    else:
        print(queue[0])

def back(): ## 가장 뒤에 있는 정수
    if(len(queue)==0):
        print(-1)
    else:
        print(queue[-1])

N = int(stdin.readline())
for i in range(N): #0~ 14까지 for(i = 0; i<15 ; i++)
    k = stdin.readline().split()
    if(k[0] == 'push'):
        push(int(k[1]))
    elif(k[0]=='pop'):
        pop()
    elif(k[0]=='size'):
        size()
    elif(k[0]=='empty'):
        empty()
    elif(k[0]=='front'):
        front()
    elif(k[0]=='back'):
        back()

 

pop()

  • 파이썬에서는 pop() 함수를 지원한다. 그냥 pop()을 하면 stack처럼 제일 뒤에 있는 요소를 빼겠지만 pop(x)를 하면 x번째 요소를 return하고 지운다.

 

queue

대표사진 삭제

사진 설명을 입력하세요.

  • queue 자료구조는 선입선출 방식이다.
  • 따라서 , 먼저 들어온 요소가 제일 먼저 나간다.
    • pop 시킬때 리스트의 0번째 인덱스를 pop() 했다.
[1] # qush 1
[1,2] # push 1 -> 2 
[1,2,3] # push 1-> 2 -> 3
 

 

front, back

  • front는 제일 먼저 들어온 요소 (제일 앞에 있는)
  • back은 제일 마지막에 들어온 요소 (제일 뒤에 있는)
  • 로 처리했다.

 

댓글