알고리즘/TIL
[99클럽 코테 스터디 4일차 TIL] Stack
모모_모
2024. 5. 23. 23:16
📒 Stack
- 후입선출, LIFO 기반의 자료구조이다.
- python에서는 list, deque등의 자료구조로 구현이 가능하다.
- java에서는 java.util.Stack 자료구조가 존재한다,
✏️ 오늘의 문제 : 올바른 괄호
📌 의식의 흐름
- 스택이라는 문제 기준을 봐서 아쉬웠다. 스택을 사용해야하는지 여부를 판단하면 좋을 것 같은데, 스택-큐 문제분류를 봐서 반쯤 정하고 들어갔다.
- naive하게 true return을 위해서는 여는 괄호와 닫는 괄호는 무조건 짝이 지어져야 하고(갯수 동일), 닫는 괄호가 여는 괄호보다 더 먼저 나와서는 안된다.
- stack을 사용해서, 여는 괄호가 들어간 만큼 top을 올리고 닫는 괄호가 들어간 만큼 top을 내린다. top이 0보다 작으면, false를 리턴한다.
📌 문제점
- 다행히 문제 없이 잘 흘러갔다.
📌 공부해야 할 것
- ps시 스택의 사용기준
⭐ 스터디에서 얻은것
문제 : 주식 가격
설명 : 초단위로 기록된 주식가격, 가격이 떨어지지 않은 기간이 몇초인지 초단위로 배열을 리턴
챌린저분의 설명에서 좋은 가르침을 얻었다.
"stack을 사용할 수 있는 이유 -> stack이 오름차순이 유지되기 때문" 이라는 말을 하셨다.
- stack은 오름차순으로 유지된다.
- stack에 들어있는 가격들은, 가격이 떨어지지 않은 기간을 유지하고 있다.
- 즉 stack pop의 기준을 정할 수 있다.
만약 스택 문제임을 몰랐다면, (설령 알았더라도) 스택을 써야하는지 알 수 없었을 것이다.
스택이 오름차순이 유지되기 때문에 (내려간 가격에 대해서는 pop), LIFO 자료구조인 stack을 활용한다는 것이 오늘의 큰 수확이다.
나도 한번 풀어봐야지