다음은 한번 스스로 완성시켜본 코드이다.
N = int(input())
queue = []
for _ in range(N):
command = input().split()
if command == "push" + str(int):
queue.append(int)
elif command == "pop":
if len(queue) == 0:
print(-1)
else:
print(queue[0])
queue.pop(0)
elif command == "front":
print(queue[-1])
elif command == "back":
print(queue[0])
elif command == "size":
print(queue.len())
elif command == "empty":
if len(queue) == 0:
print(1)
else:
print(0)
하지만 콘솔창에 아무 것도 출력되지가 않는다. 그래서 답안을 확인하였다. 확연히 나의 코드와는 달랐다.
먼저 sys와 collections의 deque를 import해왔다. deque는 double ended queue의 약자이다. 우선 첫 줄의 N과 q = deque()를 정의해주고, for문을 시작하였다. 이때 여러 줄에 걸친 입력을 map()과 readline()으로 구현하였고 이것을 최종적으로 list처리하여 이름은 cmd로 하였다. mapping된 string의 list의 경우 indexing으로 특정 문자열을 지정해줄 수 있다. 이것을 활용하여 deque에 입력해줄 값을 특정할 수 있다. 또 ₩₩₩if 리스트이름:₩₩₩의 경우 해당 리스트가 비어있는지 아닌지를 판별해주는 코드이다. 비어있지 않을 때 if문 내용을 실행한다. deque의 경우 popleft()라는 메서드를 사용할 수 있다. queue의 경우 pop을 하게 되면 FIFO를 해주어야 하기 때문에 이를 popleft()로 구현하는 것이다. 이 정도가 답안 코드에서 배운 것들이다. 다음 번엔 혼자서 처음부터 끝까지 코딩해보겠다.
'알고리즘, 문제 풀이기록' 카테고리의 다른 글
#33: 통계학 (0) | 2021.06.23 |
---|---|
#32: DFS와 BFS (0) | 2021.06.23 |
#30: 회전하는 큐 (0) | 2021.06.22 |
#29: 스택 수열 (0) | 2021.06.22 |
#28: 균형잡힌 세상 (0) | 2021.06.22 |