본문 바로가기
코테준비

코딩테스트 :: 자료형_stack

by 바다의 공간 2024. 11. 23.

 

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는 변수


새로운 데이터가 들어가기 위한 순서

 

1. full ->top -> push


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()

1123_stack.jpg
0.36MB

 

'코테준비' 카테고리의 다른 글

코딩테스트 :: 자료형_stack 문제  (0) 2024.11.24
[코딩테스트] 자료구조  (0) 2024.11.17
파이썬으로 코딩 테스트 준비하기!  (0) 2024.11.16