PS 문제풀이
10866번 : 덱
희디
2022. 6. 26. 04:41
class2 silver4
import sys
n_command=int(input())
deque=[]
for k in range(n_command):
command = sys.stdin.readline().split()
if command[0]=="push_front" :
deque.insert(0, command[1])
elif command[0]=="push_back":
deque.insert(len(deque),command[1])
elif command[0]=="pop_front":
if not deque:
print(-1)
else :
print_out=deque[0]
del deque[0]
print(print_out)
elif command[0]=="pop_back":
if not deque:
print(-1)
else:
out=deque.pop()
print(out)
elif command[0]=="size" :
print(len(deque))
elif command[0]=="empty":
if not deque:
print(1)
else :
print(0)
elif command[0]=="front":
if not deque:
print(-1)
else:
print(deque[0])
elif command[0]=="back":
if not deque:
print(-1)
else:
print(deque[len(deque)-1])
헷갈렸던 포인트는 인덱스에 관한 것이었다.
일단 코드 설명을 하자면 문제에서 주어진대로 그대로 수행해야한다. 일단 각 n_command의 수 만큼의 command를 입력하고 그에 따른 함수에 대해 설명하겠다.
1) push_front : append가 아닌 insert(0, command[1]) 어느 수이든 가장 앞에 넣어야 하므로, 인덱스값을 지정해서 넣기
2) push_back : 마찬가지로 insert로 넣어주지만, 넣으면서 개수가 한 개 늘어나므로 기존의 길이 len(deque)-1에 1을 더한 값인 len(deque)에 넣어줘야 한다.
3) pop_front : 인덱스가 0인 값을 삭제해야 하므로, del deque[0]을 이용해서 삭제한다. 삭제하기 전에 먼저 값을 저장해서 삭제된 정확한 값을 출력하도록 한다.
4) pop_back : 가장 뒤에 있는 수를 출력한다. pop은 삭제되면서 값을 저장할 수 있으므로 리턴값 변수를 지정해서 저장하고 해당 변수를 출력한다.
5) size : 말 그대로 len(deque)로 사이즈 출력하기
6) empty : 비어있다면 1, 수가 있으면 0
7) front : 가장 앞의 수, 인덱스가 0인 값을 출력한다.
8) back : 가장 마지막 인덱스 len(deque)-1을 가진 수를 출력한다.