반응형
이번 시간에는 스택과 큐에 이어, 덱을 배워보려고 한다.
덱의 개념은 스택과 큐를 합친것과 유사한데, 왜냐하면 push와 pop을 하는 부분이 각 끝단에 하나씩 위치하기 때문이다. 이게 무슨말이냐면, 앞과 뒤에 pushfront, pushback을 통해서 각각 대입할 수 있고, popfrront와 popback을 통해 각각 소거할 수 도 있다.
따라서 이번 덱 구문에서 사용가능한 명령은 pushfront, pushback, popfront, popback, size, empty, front, back 이렇게 여덟가지가 있다.
그러면 이 명령들을 사용해서 한번 코드를 짜보도록 하자.
///
import sys num=int(input()) deque=[] for i in range(num): new=sys.stdin.readline().split() ch=new[0] if ch=='push_front': deque.insert(0,new[1]) elif ch=='push_back': deque.append(new[1]) elif ch=='pop_front': if len(deque)!=0: print(deque.pop(0)) else: print(-1) elif ch=='pop_back': if len(deque)!=0: print(deque.pop(-1)) else: print(-1) elif ch=='size': print(len(deque)) elif ch=='empty': if len(deque)==0: print(1) else: print(0) elif ch=='front': if len(deque)==0: print(-1) else: print(deque[0]) elif ch=='back': if len(deque)==0: print(-1) else: print(deque[-1]) |
///
위 식에 대해 간단히 설명을 해보겠다.
push_front를 통해 덱 구문의 가장 앞에 새로운 수를 추가한다. push_back을 통해서는 덱의 마지막에 새로운 수를 이어준다.
pop_front를 통해 덱이 비었다면 -1을 출력, 아니라면 가장 앞에 있는 수를 출력한다. pop_back을 통해 덱이 비었다면 똑같이 -1을 출력, 아니라면 가장 뒤에 있는 수를 출력한다.
size구문을 통해선 덱의 길이를 출력한다.
empty 구문을 통해서는(is_empty로 불리기도 한다.) 구문이 비어있다면 1을, 아니라면 0을 출력하도록 한다.
front를 통해서는 덱의 길이가 0이라면 -1을 출력하고 아니라면 가장 첫번째로 있는 수를 출력한다.
back을 통해서 덱의 길이가 0이라면 -1을 출력하고, 아니라면 가장 뒤에 있는 수를 출력한다.
반응형
'코딩(파이썬)_백준' 카테고리의 다른 글
백준 알고리즘 2920번 음계 (파이썬, python) (0) | 2022.05.11 |
---|---|
백준 알고리즘 2739번 구구단(파이썬, python) (0) | 2022.05.01 |
백준 알고리즘 10845번 큐(파이썬 , Python) (0) | 2022.03.25 |
백준 알고리즘 10828번 스택(파이썬,Python) (0) | 2022.03.21 |
백준 알고리즘 1330번 두 수 비교하기(파이썬,Python) (0) | 2022.03.20 |