본문 바로가기

알고리즘, 문제 풀이기록

#31: 큐 2

https://www.acmicpc.net/problem/18258

다음은 한번 스스로 완성시켜본 코드이다.

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