본문 바로가기

코딩/Python

[Python] 백준 10866 덱

반응형

코드 작성

from collections import deque  #collection모듈의 deque을 사용한다.
import sys

d = deque()
n = int(input())

for i in range(n):
    cmd = sys.stdin.readline().split()  #명령어(cmd)를 [0]에는 입력어, [1]에는 추가될 자료를 입력

    if cmd[0] == "push_front":
        d.appendleft(cmd[1])     #cmd[1]의 값을 d의 처음에 입력
    elif cmd[0] == "push_back":
        d.append(cmd[1])
    elif cmd[0] == "pop_front":
        if d:    #d에 자료가 있을경우(len(d)==0)으로도 표현
            print(d[0])    
            d.popleft()  #d의 제일 첫 번째 자료를 빼냄
        else:
            print("-1")
    elif cmd[0] == "pop_back":
        if d:
            print(d.pop())
        else:
            print("-1")
    elif cmd[0] == "size":
        print(len(d))
    elif cmd[0] == "empty":
        if d:
            print("0")
        else:
            print("1")
    elif cmd[0] == "front":
        if d:
            print(d[0])  #d의 처음 값 출력
        else:
            print("-1")
    elif cmd[0] == "back":
        if d:
            print(d[-1])  #d의 마지막 값(또는 top)을 출력
        else:
            print("-1")

코드  풀이

#1

deque을 사용하여

list가 [1, 2, 3, 4, 5, 6, 7, 8, 10] 있다면, 첫번째에 넣고, 빼고, 마지막에 넣고, 빼고를 하는 연산이다.

하나의 입력을 가지고 1개의 수행을 한다. n개의 자료가 있으면 1개 처리시 1개가 수행되므로  시간복잡도는 n개가 된다.

반응형

'코딩 > Python' 카테고리의 다른 글

[Python] 백준 10872 팩토리얼  (0) 2022.11.15
[Python] 백준 1789 수들의 합  (0) 2022.11.14
[Python] 백준 1110 더하기 사이클  (0) 2022.11.13
[Python] 백준 10951 A+B -4  (0) 2022.11.13
[Python] 백준 10952 A+B -5  (0) 2022.11.13