intro
π stackμ (νμ΄μ¬ μ½λ κΈ°μ€ append()μ pop()) μ°μ°μ΄ O(1)μμ κ°μν΄ ν κ³³μμ λ£κ³ λΉΌκ³ λ₯Ό λ°λ³΅νλ κ³Όμ μμ stackμ μμκ° μ€λ¦μ°¨μ λλ λ΄λ¦Όμ°¨μμ μ μ§νκ²λ νλ stackμ λ§λλ μ νμ 'monotonic stack' μ νμ΄λΌκ³ νλ€.
π μλ μμμ κ°μ΄ λ΄λ¦Όμ°¨μμΌλ‘ μ΄λ£¨μ΄μ§ stackμ μ μ§νλ©΄μ, μλ‘μ΄ μμ 6μ΄ λ€μ΄μ¬ λ pop() μ°μ° 4λ² μ§ν ν λΉ λ₯΄κ² append() μ§ν
π μ€λ¦μ°¨μ λλ λ΄λ¦Όμ°¨μ μμ stackμΌλ‘ μ λ°μ΄νΈ λλ κ³Όμ μμ νμ¬ μμλ³΄λ€ μ€λ₯Έμͺ½ λλ μΌμͺ½ μμ μ€ κ°μ₯ κ°κΉμ΄ μλ μμ μ΅λ/μ΅μκ° κ΅¬νκΈ° λλ νμ¬ μμλ³΄λ€ μ€λ₯Έμͺ½ λλ μΌμͺ½ μμ μ€ κ°μ₯ κ°κΉμ΄ μλ μμμ μμΉ κ΅¬νκΈ°κ° λν μ νμΌλ‘ λ§μ΄ λμ¨λ€.
π μμ μ½λ(μ€λ¦μ°¨μμ μ μ§ν μνμμ 13μ λ£μ΄ stack update)
stack = [3, 5, 9, 12, 15]
x = 13
while stack:
if stack[-1] >= x:
stack.pop()
else:
stack.append(x)
break
print(stack) #[3, 5, 9, 12, 13]
Exercises
β <BOJ G3 17299 μ€λ±ν°μ>
: νμ¬ μμλ³΄λ€ μ€λ₯Έμͺ½μ μμΌλ©΄μ λ±μ₯ νμκ° ν° μ μ€ κ°μ₯ μΌμͺ½μ μλ μ μΆλ ₯. λ±μ₯ νμλ λ³λλ‘ Counter νμ©
β <BOJ G4 17298 μ€ν°μ>
: 17299μ λμΌν λ¬Έμ . λ€λ§ λ±μ₯ νμκ° μλ λ¨μν ν° μ μ€ κ°μ₯ μΌμͺ½μ μλ μ μΆλ ₯
β <BOJ G5 2493 ν>
: νμ¬ μμλ³΄λ€ μΌμͺ½μ μμΌλ©΄μ μμ λ³΄λ€ ν° μμ μ€ κ°μ₯ κ°κΉμ΄ μμ μμΉ μΆλ ₯
β <BOJ G5 6198 μ₯μ₯ μ μ κΎΈλ―ΈκΈ°>
: νμ¬ μμλ³΄λ€ μ€λ₯Έμͺ½μ μμΌλ©΄μ μμ λ³΄λ€ ν° μμμ κ°μλ₯Ό λμ μΌλ‘ ν©ν΄μ μΆλ ₯
β <BOJ G5 21956 Treasure>
: monotonic stackμ λ΄λΆ update κ³Όμ μ λ¬Έμ λ‘ κ·Έλλ‘ νν
β <BOJ G5 24305 ΠΠ’Π§ΠΠ’>
: νμ¬ μμλ³΄λ€ μ€λ₯Έμͺ½μ μμΌλ©΄μ μμ λ³΄λ€ ν° μ μ€ κ°μ₯ μΌμͺ½μ μλ μ μΆλ ₯
'Computer Science > Data Structures' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
π₯ͺArray (0) | 2025.01.17 |
---|---|
β‘οΈ Linked List (0) | 2024.09.26 |
πBinary Heap (0) | 2024.07.17 |
π₯ͺArray & Linked List Intro (2) | 2024.01.08 |
π³ Binary Tree π³ (1) | 2023.12.19 |
λκΈ