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

문제
정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여섯 가지이다.
- 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은 제일 마지막에 들어온 요소 (제일 뒤에 있는)
- 로 처리했다.
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] [파이썬/Python] 11047번: 동전0 풀이 / 그리디알고리즘 설명 / sort()/내림차순 정렬 (3) | 2023.02.20 |
---|---|
[백준] [Python/파이썬] 10773번 : 제로 풀이 (0) | 2023.02.18 |
[백준] [파이썬/Python] 1100번 : 하얀 칸 풀이/ rstrip(), 2차원 배열 응용 (0) | 2023.02.16 |
[백준] [파이썬/Python] 11866번 : 요세푸스 문제 풀이 (0) | 2023.02.16 |
[백준] [파이썬/Python] 18258번 : 큐2 / deque 설명 / popleft()/appendleft()/deque() (2) | 2023.02.15 |
댓글