List (배열) | Stack (쌓는다) <FILO> First In Last Out |
Queue |
1. 선형맅스트(패턴을 예측할 수 있다) 2. 검색은 빠르지만, 비효율적 3. 정적,동적배열 (한번 사이즈를 설정하면 변경 가능,불가능) 4. appen() => 리스트를 생성(빈 리스트를 생성) test =[] 5. 데이터를 삽입, 삭제 등 수정할 수 있다. |
<리스트, 튜플, 딕셔너리> * 딕셔너리 자료구조 (key:value) : Hash * push, pop을 연산으로 부름 * top(변수) - 즉 push, pop, top을 가지고 활용 - 초기값은 -1을 가지고 데이터가 들어오면 '먼저' 증가한다. 흐름) stack 동작원리 밑에 이미지 참고 |
stack은 push는 데이터(값)이 필요하지만 뺄때는 pop의 값이 필요하지 않는다.
왜냐? FILO이기때문에 어차피 나가는 값은 맨 마지막에들어간 값이 먼저 나와야하기때문에.
1. Stack의 흐름
정리
# 데이터가 나갈때는 데이터가 먼저 나가고 top가 다음에 나가야함!
# top는 데이터가 나간 후에 감소한다.
# 데이터가 들어갈때는 push, 나갈때는 pop, 데이터의 위치를 알려주는건 top임!
스택의 ADT(추상 자료형)
1. 데이터를 집어넣는(Push)
2.데이터를 빼는 (POP)
3.자료 여부 확인하는(isFull) :
-현재 스택에 자리가 다 찼는지 확인해야함.
그래서 isFull이라는것이 있다.
4. 자리가 있는지 확인하는 (isEmpty ) : 스택의 연산자 <라고 부름>
(영화관 청소부역할: 자료를 뺄때 사용함!)
5. 포지션값을 알게 해주는(top)은 변수라고 부름!
- top는 스택의 상태를 알 수 있음.
- top이 0이라면 데이터가 '이미' 있다는 뜻.
* 1~4는 연산이라고 부름!, 5는 변수
새로운 데이터가 들어가기 위한 순서
Stack 구현
1. 빈 stack 생성 < stack =[] >
2. stack의 전체 사이즈 설정 <max_size=10>
3. 데이터 차있는지 확인 <isFull> / isFull함수는 push가 함!
-isFull할때는 이름이 들어가야함 ex)isFull(이름)
코드구현
#stack 구현
stack = []
max_size = 10
def isFull(stack):
return len(stack) == max_size
def isEmpty(stack):
return len(stack) == 0
def push(steck, data):
if isFull(stack):
print("가득 가득 하군요")
else:
stack.append(data)
print("데이터 추가 완료")
# 지워주는것
def pop(stack):
if isEmpty(stack):
print("비어있군요")
return None
else:
return stack.pop()
'코테준비' 카테고리의 다른 글
코딩테스트 :: 자료형_stack 문제 (0) | 2024.11.24 |
---|---|
[코딩테스트] 자료구조 (0) | 2024.11.17 |
파이썬으로 코딩 테스트 준비하기! (0) | 2024.11.16 |