배열을 하나 입력받고 이때 배열 값의 크기는 꺼낼 수 있는 순서를 의미합니다. 배열의 인덱스 번호대로 정렬을 하려고 할 때 만약 현재 필요한 순서의 값을 꺼낼 수 없으면 현재 값을 꺼내서 다른 스택에 저장해놓을 수 있고 만약 어떤 방식으로도 현재 필요한 순서의 값을 꺼낼 수 없으면 그 상태에서 프로그램을 종료합니다. 이때 순서에 맞게 꺼낼 수 있는 값의 개수를 구하는 문제입니다.
from collections import deque
def solution(order):
answer = 1
arr=[[i+1, order[i]] for i in range(len(order))]
arr.sort(key = lambda x:x[1])
stack=deque()
for i in range(len(order)):
if arr[i][0]==answer:
answer+=1
while stack:
if stack[-1][0]==answer:
stack.pop()
answer+=1
else:
break
else:
stack.append(arr[i])
return answer-1
p.s. 문제를 푸는것보다 문제를 해석하고 설명하는게 더 어렵네요... 문제 지문이 무슨 수능 비문학 같은 느낌입니다...
p.s.2. 문제 설명이 뭔가 엉망진창인것 같은데 나중에 보고 수정할 수 있으면 다시 수정해야겠네요...