TIL/Python
[ch09]스택,큐
seo-0
2021. 7. 31. 16:24
[ 파이썬 알고리즘 인터뷰_알고리즘 스터디 리뷰 ]
* 괄호 문제
- 열린 괄호면 stack 에 넣기
- 닫힌 괄호 만나면 해당 괄호의 열린 괄호가 stack 에 있는지 확인
- 마지막에 stack 에 열린 괄호가 있다면 짝이 맞지 않는 것
stack = []
table = { ')':'(',
']':'['.
'}':'{', }
for char in s:
if char not in table:
stack.append(char)
elif not stack or table[char] != stack.pop():
return False
return len(stack) == 0
* 빗물 트래킹 / 온도 / 주식 등등
- 더 낮은 or 더 높은 값 나올때까지 각 요소들은 얼마나 기다리거나 걸리는지
-> stack 으로 풀기
: stack 에 값 넣어놓고, 더 낮은 or 더 높은 값 나오면 스택에 쌓아둔 값이랑 비교
: while stack 동안 비교 ( stack 에서 꺼내야 할 값이 여러 개 일 수 있으니까 )
+ 해당 인덱스에 매핑되는 값 변경하기
res = [0] * len(temperatures)
# 길이만큼 0값으로 초기화 후 인덱스로 값 변경
* 원형 큐
- Enqueue : rear 가 가리키는 곳에 value 저장, rear 증가
-> 증가 시에 전체 길이로 나눈 나머지
def enQueue(self, value: int) -> bool:
if self.queue[self.rear] is None:
self.queue[self.rear] = value
self.rear = (self.rear + 1 ) % len(self.queue)
return True
else:
return False
- Dequeue : front 가 가리키는 곳에 value 삭제, front 증가
def deQueue(self) -> bool:
if self.queue[self.front] is not None: # 값이 있으면
self.queue[self.front] = None
self.front = (self.front+1) % len(self.queue)
return True
else:
return False