import sys
testCase = int(sys.stdin.readline())
deque = []
result = []
for i in range(testCase):
line = sys.stdin.readline().split()
if line[0] == 'push_front':
deque.insert(0, line[1])
elif line[0] == 'push_back':
deque.append(line[1])
elif line[0] == 'pop_front':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque.pop(0))
elif line[0] == 'pop_back':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque.pop())
elif line[0] == 'size':
result.append(len(deque))
elif line[0] == 'empty':
if len(deque) != 0:
result.append(0)
else:
result.append(1)
elif line[0] == 'front':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque[0])
elif line[0] == 'back':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque[-1])
for i in result:
print(i)
지금까지 리스트를 활용한 문제에서 요소를 추가할 때 뒤에 추가했기 때문에 append(리스트 마지막에 요소 추가)만 사용했었다. 하지만 이 문제에서는 "push_front X: 정수 X를 덱의 앞에 넣는다." 때문에 요소를 리스트의 맨 앞에 추가해야된다. push_front를 수행하기 위해서 insert를 사용했다. insert는 "리스트이름.insert(index, 값)" 형태로 사용하는데 괄호안에는 '리스트의 몇번째 index에 어떤 값을 넣을지' 써준다고 생각하면 쉽다. 아래 코드에서 insert를 사용했다.
# push_front X: 정수 X를 덱의 앞에 넣는다.
if line[0] == 'push_front':
deque.insert(0, line[1]) # deque라는 리스트 0번째에 line[1]값 추가
import sys
testCase = int(sys.stdin.readline())
deque = []
result = []
for i in range(testCase):
line = sys.stdin.readline().split()
# push_front X: 정수 X를 덱의 앞에 넣는다.
if line[0] == 'push_front':
deque.insert(0, line[1]) # deque라는 리스트 0번째에 line[1]값 추가
# push_back X: 정수 X를 덱의 뒤에 넣는다.
elif line[0] == 'push_back':
deque.append(line[1])
# pop_front
# 덱의 가장 앞에 있는 수를 빼고 그 수를 출력 + 만약 덱에 들어있는 정수가 없는 경우에는 -1 출력
elif line[0] == 'pop_front':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque.pop(0))
# pop_back
# 덱의 가장 뒤에 있는 수를 빼고 그 수를 출력 + 만약 덱에 들어있는 정수가 없는 경우에는 -1 출력
elif line[0] == 'pop_back':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque.pop())
# size: 덱에 들어있는 정수의 개수를 출력
elif line[0] == 'size':
result.append(len(deque))
# empty: 덱이 비어있으면 1 아니면 0을 출력
elif line[0] == 'empty':
if len(deque) != 0:
result.append(0)
else:
result.append(1)
# front
# 덱의 가장 앞에 있는 정수를 출력 + 만약 덱에 들어있는 정수가 없는 경우에는 -1 출력
elif line[0] == 'front':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque[0])
# back
# 덱의 가장 뒤에 있는 정수를 출력 + 만약 덱에 들어있는 정수가 없는 경우에는 -1 출력
elif line[0] == 'back':
if len(deque) == 0:
result.append(-1)
else:
result.append(deque[-1])
# 결과 출력
for i in result:
print(i)
비교적 수월하게 한 것 같다.