본문 바로가기

알고리즘/python

[python/파이썬] 백준 18258 큐2

반응형

[문제 출처]

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

 

18258번: 큐 2

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

www.acmicpc.net

 

[소스 코드]

함수 밖에서 전역 변수를 선언하고 함수에서 참조할 경우, 

함수 밖에서 global을 사용해 선언해준 후에 함수 내에서 다시 한번 더 선언해주어야 한다.

 

리스트를 이용해 큐를 구현하기 위해, 앞을 나타내는 front와 맨 뒤+1을 나타내는 rear 변수를 사용해주었다.

전역 변수로 선언했으며, pop 할 때마다 front를 증가시켜 맨 앞 원소를 제거한 효과를 주었고,

push를 할 때마다 rear를 증가시켜서 큐의 사이즈를 확인할 수 있게 하였다.

#18258
import sys
input = sys.stdin.readline

q = []
global front
global rear

front = 0
rear = 0
def comm():
  global front
  global rear

  c = list(input().split())
  
  if c[0]=='push':
    q.append(c[1])
    rear += 1
  elif c[0]=='pop':
    if front == rear:
      print(-1)
    else:
      front += 1
      print(q[front-1])
  elif c[0]=='size':
    print(rear-front)
  elif c[0]=='empty':
    if front==rear:
      print(1)
    else:
      print(0)
  elif c[0]=='front':
    if front==rear:
      print(-1)
    else:
      print(q[front])
  elif c[0]=='back':
    if front==rear:
      print(-1)
    else:
      print(q[rear-1])

n = int(input())

for i in range(n):
  comm()
반응형