728x90
반응형
반응형
🙆♂️문제
🙋♂️풀이
🚀 입력받기
import sys
n = int(sys.stdin.readline())
com = [list(sys.stdin.readline().split()) for _ in range(n)]
빠른 입력을 위해서 sys라이브러리를 사용해 sys.stdin.readline()으로 입력을 받았습니다.
n에는 명령어의 개수를 입력받고
com에는 명령어들을 입력받았습니다.
🚀 문제 풀이 핵심 & 출력하기
deque=[]
for i in com:
lenD = len(deque)
if i[0] =='push_front':
deque.insert(0, i[1])
elif i[0] == 'push_back':
deque.append(i[1])
elif i[0] == 'pop_front':
if lenD == 0:
print(-1)
else:
print(deque[0])
deque.pop(0)
elif i[0] == 'pop_back':
if lenD == 0:
print(-1)
else:
print(deque[-1])
deque.pop(-1)
elif i[0] == 'size':
print(lenD)
elif i[0] == 'empty':
if lenD == 0:
print(1)
else:
print(0)
elif i[0] == 'front':
if lenD == 0:
print(-1)
else:
print(deque[0])
elif i[0] == 'back':
if lenD == 0:
print(-1)
else:
print(deque[-1])
먼저 deque로 사용할 리스트를 선언했습니다.
자세히 살펴보면
if i[0] =='push_front':
deque.insert(0, i[1])
파이썬 리스트의 내장 함수인 insert를 사용해서 0번 인덱스에 입력받은 수를 삽입합니다.
elif i[0] == 'push_back':
deque.append(i[1])
append를 사용해서 deque 가장 뒤에 입력받은 수를 입력합니다.
elif i[0] == 'pop_front':
if lenD == 0:
print(-1)
else:
print(deque[0])
deque.pop(0)
lenD는 deque의 길이입니다. deque의 길이가 0이면 입력된 값이 없는 것이므로 -1을 출력하고 0이 아니라면 0번 인덱스의 값을 출력하고 제거합니다.
elif i[0] == 'pop_back':
if lenD == 0:
print(-1)
else:
print(deque[-1])
마찬가지로 리스트의 -1번째는 리스트의 마지막인 것을 이용해서 제거합니다.
elif i[0] == 'size':
print(lenD)
배열의 길이가 곧 dqeue의 정수의 개수이므로 출력합니다.
elif i[0] == 'empty':
if lenD == 0:
print(1)
else:
print(0)
lenD가 0이면 비어있으므로 1을 출력, 아니면 0을 출력합니다.
elif i[0] == 'front':
if lenD == 0:
print(-1)
else:
print(deque[0])
elif i[0] == 'back':
if lenD == 0:
print(-1)
else:
print(deque[-1])
위의 pop_front,와 pop_back과 거의 유사하듯 출력합니다.
728x90
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][Python] 10799. 쇠막대기 (0) | 2022.08.30 |
---|---|
[백준][Python] 1264. 모음의 개수 (1) | 2022.08.29 |
[백준][Python] 4101. 크냐? (0) | 2022.08.24 |
[백준][Python] 1158. 요세푸스 문제 (0) | 2022.08.24 |
[백준][Python] 10845. 큐 (0) | 2022.08.24 |