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]

 

+ Recent posts