코딩테스트/백준

[백준][Python] 10866. 덱

내만 2022. 8. 29. 13:14
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
반응형