[알고리즘] 스택과 큐

진주·2022년 2월 28일
0

알고리즘

목록 보기
1/3

🍊 스택이란?

영어로 Stack = 쌓다 는 의미를 가지고있다.
프로그래밍에서 목록 or 리스트에서 접근이 한 쪽에서만 가능한 구조이다.
LIFO(Last-in, First Out)이 기본 원리이다.

🍔 stack의 구조

  • push
  • peek
  • pop


🥦 Python 스택의 구현 방법

  1. 직접 구현
    2. 이미 구현된 클래스 import
    ~~3. List를 스택으로 ~~

python은 List가 스택으로 사용가능하도록 구현되어 있다.


1) python 스택 직접 구현

class Stack(list) :
	push = list.append
    # append : list에 하나의 요소를 추가하는 함수 = stack의 push와 100% 동일하다.

	def peek(self):
		return self[-1]
	# peek : stack의 가장 마지막에 있는 데이터를 보여주기 위함, index -1 값을 집어넣어준다.
    
    # pop : list의 내장 함수로 이미 존재하므로 정의 x
   

1. push() 함수 사용

s = Stack()
s.push(1)
s.push(5)
s.push(10)
print("my stack is" , s)


2. pop() 함수 사용

s.pop()을 사용하면 마지막 value인 10이 제거된 것을 볼 수 있다.
다시 한 번 stack을 확인하면 10은 존재하지 않는다는 것을 알 수 있다.


3. peek() 함수 사용

s.peek()은 가장 마지막에 있는 데이터를 보여주기만 할 뿐, 추출하지 않는다.


2) python List를 스택으로 활용

s = []
s.append(1)
s.append(5)
s.append(10)
print("my stack is" : s) 


python 내장함수 pop() 사용

pop을 통해 마지막 데이터인 10이 추출되었기 때문에, stack 값을 다시 살펴보면 [1, 5] 만 저장되어있다.


index값을 활용하여 peek() 구현


🍕 stack의 활용

1) 브라우저의 [이전 페이지] , [다음 페이지]

1. 네이버에서 구글 페이지로 이동한다.

: 네이버가 이전 페이지 stack으로 push되었다.

2. 구글에서 유튜브로 페이지를 이동한다.

: 구글이 이전 페이지 stack에 push되었다.

3. 이전 페이지를 클릭한다.

: 유투브가 다음 페이지 stack에 들어가고, 이전 페이지에서 구글이라는 페이지가 pop되어 빠져나왔다.

4. 한 번더 이전 페이지를 클릭한다.

: 구글이 다음 페이지에 들어가고, 이전 페이지에서 네이버가 빠져나왔다.


2) 깊이 우선 탐색(DFS)

다음 강의에 설명할 것

profile
진주의 코딩일기

0개의 댓글

관련 채용 정보