티스토리 뷰

📚 문제

입력

출력

예제 입력 1

15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front

예제 출력 1

2
1
2
0
2
1
-1
0
1
-1
0
3

예제 입력 2

22
front
back
pop_front
pop_back
push_front 1
front
pop_back
push_back 2
back
pop_front
push_front 10
push_front 333
front
back
pop_back
pop_back
push_back 20
push_back 1234
front
back
pop_back
pop_back

예제 출력 2

-1
-1
-1
-1
1
1
2
2
333
10
10
333
20
1234
1234
20

🧑🏻‍💻 풀이 과정

  • n번동안 반복하며 명령어(command)를 입력받자.
  • from collections import deque를 이용하여 dq = deque()를 선언하자.
  • push_front면 명령어의 11번째부터 appendleft로 맨 앞에 저장하자.
  • push_back이면 명령어의 10번째부터 append로 맨 뒤에 저장하자.
  • pop_front면 dq에 요소가 있으면 popleft로 맨 앞의 요소로 꺼내면서 출력, 없으면 -1을 출력하자.
  • pop_back이면 dq에 요소가 있으면 pop으로 맨 뒤의 요소로 꺼내면서 출력, 없으면 -1을 출력하자.
  • size면 de의 사이즈를 출력하자.
  • empty면 de에 요소가 있으면 0을 출력하고, 없으면 1을 출력하자.
  • front면 dq에 요소가 있으면 dq[0]으로 맨 앞의 요소를 출력, 없으면 -1을 출력하자.
  • back이면 dq에 요소가 있으면 dq[-1]로 맨 뒤의 요소를 출력, 없으면 -1을 출력하자.
import sys
from collections import deque


def process():
    command = sys.stdin.readline().rstrip()

    # push_front
    if 'push_front' in command: dq.appendleft(command[11::])

    # push_back
    if 'push_back' in command: dq.append(command[10::])

    # pop_front
    if command == 'pop_front': print(dq.popleft()) if dq else print(-1)

    # pop_back
    if command == 'pop_back': print(dq.pop()) if dq else print(-1)

    # size
    if command == 'size': print(len(dq))

    # empty
    if command == 'empty': print(0) if dq else print(1)

    # front
    if command == 'front': print(dq[0]) if dq else print(-1)

    # back
    if command == 'back': print(dq[-1]) if dq else print(-1)


dq = deque()
for _ in range(int(sys.stdin.readline().rstrip())):
    process()
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함