π¬ λ¬Έμ
π¨ μ μΆλ ₯ μ
π‘ ν΄κ²°
νμ μ€νμ μ¬μ©νλ μλ£κ΅¬μ‘° λ¬Έμ λ‘ λ무 μ§κ΄μ μ΄μλ€. μ²μμ νλ₯Ό μ¨μΌ λ κΉ? λΌλ μκ°μ΄ λ€μμ§λ§ μ§κ΄μ μΌλ‘ νμ μ€νμ μ¬μ©νμ¬ νκΈ°λ‘ νμλ€.
from collections import deque
def solution(order):
n = len(order)
now = 0
arr = deque()
stack = []
result = 0
for i in range(n):
arr.append(i+1)
while True:
if len(arr) == 0 and (len(stack) ==0 or stack[-1] != order[now]):
return result
if len(arr) >0:
tmp = arr[0]
else:
tmp = -1
if tmp == order[now]:
arr.popleft()
now+=1
result+=1
elif len(stack) !=0 and stack[-1] == order[now]:
stack.pop()
now+=1
result+=1
else:
arr.popleft()
stack.append(tmp)
κ·Έλ κ² μ§κ΄μ μΌλ‘ νΌ μ½λμ΄λ€. λ¬Έμ μμ 보λ΄μ€ μ ν 쑰건μ λ°λΌκ°λ©°, κ° μ μλ λ°©ν₯μ μ΄ 3κ°μ΄λ€.
1. 컨ν μ΄λμμ λ°°μ‘μ§
2. 컨ν μ΄λμμ μλΈμ»¨ν μ΄λ(μ€ν)
3. μλΈ μ»¨ν μ΄λ(μ€ν)μμ λ°°μ‘μ§
μ΄λ κ² μ νμ‘°κ±΄μ΄ λ°μ 3κ°λ€μ΄κ³ , κ·Έ μμλ νμΆ μ‘°κ±΄λ€μ΄λ€. κ·Έλ°λ°, μ¬μ€ 3λ²μΈκ° ν μΌλ₯Ό νλ Έμλ€.
list out of bound μλ¬κ° λ§μ΄ λ΄μκ³ , 맨 μ νμΆ μ‘°κ±΄μ 3λ²μ΄λ κ³ μ³€λ€. μμ’μ μ½λμΈκ±°λ€.
μ΄λ»κ²λ λ§μΆκΈ΄ νλλ°, ν¨μ¬ λ μ€μΌ μ μμκ±° κ°μλ° μ’μ λ°©λ²μ΄ μκ°μ΄ μλ λ€λ₯Έμ¬λλ€μ μ½λλ₯Ό 보μλ€.
νλ₯Ό μ°μ§ μκ³ , μΈλ±μ€λ₯Ό μ΄μ©νμ¬ νλ©΄ μκ°μ λ μ€μΌ μ μμκ³ ,
컨ν μ΄λμμ λ°°μ‘μ§λ‘ λ°λ‘ κ°λ κ²μ μ€νμ κ±°μ³ κ°λ€λ©΄ 1,2,3 μ€μμ 1,2λ₯Ό μμ κ³ 3λ§ λ³Ό μ μμλ€.(λλν μ¬λλ€)
κ·Έλ κ² λ°μ΄ μ΅μ’ μ½λμ΄λ€.
π¨π»π» CODE
def solution(order):
answer = 0
stack = []
idx=1
while idx != len(order)+1:
stack.append(idx)
while stack[-1] == order[answer]:
answer += 1
stack.pop()
if len(stack) == 0:
break
idx += 1
return answer
πͺπ» λλμ
μ λ° κ΅¬μμ λ΄κ° μ½ν
λ ν μ μμκΉ κ±±μ λλ€.