STACK - FILO
VPS일 조건
- 문자열 S를 감싸거나 (s) , 문자열 S, T를 연결함
- 열린 괄호 닫힌 괄호의 갯수만 맞다면 vps일까?
- X, )( 이 생길 수 있다.
(())()) 을 STACK으로 표현해보기
- 열린 괄호를 닫힌 괄호가 들어오기 전까지 stack에 push 한다.
- 닫힌 괄호가 들어오면 현재 top인 열린 괄호와 짝꿍을 이루게 되므로 열린 괄호를 pop 하여 뺀다.
- 이 과정을 반복하며, 마지막으로 남은 ) 가 짝꿍이 없으므로 VPS가 아니다.
VPS가 아닌 경우를 생각해 보기
- Stack이 비었지만 닫힌 괄호가 남아있을 경우
- 열린 괄호만 들어오는 경우
- len(stack) > 0
QUEUE - FIFO
- 필요없는 부분에 대한 메모리를 줄이기 위하여 사용
from collections import deque
N,K = map(int, input().split())
dq = deque(range(1,N+1))
ans = list()
while len(dq):
dq.rotate(-K+1) // 위 사진에서 pop하고 push 하는 과정, 뒤에있는 것을 빼서 앞에 붙임
ans.append(dq.popleft())
print(ans)
// [3, 6, 2, 7, 5, 1, 4]
'Algorithm > basic' 카테고리의 다른 글
grape/tree/heap/bst (0) | 2021.07.22 |
---|---|
sort (select/bubble/quick/merge/radix) (0) | 2021.07.22 |
수학 (진수와진법/최대공약수/최소공배수/소인수분해, 재귀함수) (0) | 2021.07.20 |
읽기와 분석 (시간복잡도/공간복잡도 등) (0) | 2021.07.15 |