Algorithms

Stack & Queue

술임 2023. 3. 4. 18:33

그래프를 탐색하기 위한 대표적인 2가지 알고리즘

탐색 Search

많은 양의 데이터 중에서 원하는 데이터를 찾는 과정

e.g. DFS, BFS

 

자료구조 Data Structure

- 데이터를 표현하고 관리하고 처리하기 위한 구조

- 스택과 큐는 자료구조의 기초 개념

- push, pop으로 구성됨

* 삽입 Push

삭제 Pop

오버플로우 Overflow

특정 자료구조가 수용할 수 있는 데이터의 크기를 가득 찬 상태에서 삽입 연산 수행 시 발생 (저장 공간 벗어나 데이터가 넘쳐흐를 때)

언더플로우 Underflow

특정 자료구조에 데이터가 전혀 들어있지 않은 상태에서 삭제 연산 수행 시 발생

 

스택 Stack

박스 쌓기

선입후출 First In Last Out

후입선출 Last In First Out

파이썬에서는 append()와 pop() 메서드를 이용하면 됨

* append() : 리스트 가장 뒤쪽에 데이터 삽입

* pop() : 리스트 가장 뒤쪽에서 데이터 꺼냄

 

큐 Queue

대기 줄

선입선출 First In First Out

큐를 구현하려면 deque 라이브러리 사용하면 됨

from collections import deque

queue = deque()

queue.append(5)
queue.popleft()

# 먼저 들어온 순서대로 출력
print(queue)
# 다음 출력을 위해 역순으로 바꾸기
queue.reverse
# 나중에 들어온 원소부터 출력
print(queue)

# deque 객체를 리스트 자료형으로 바꾸고자 할 때
list(queue)

 

재귀 함수 Recursive Function

자기 자신을 다시 호출하는 함수

def recursive_function():
	print("재귀 함수")
    recursive_function()
    
recursive_function()

종료 조건을 꼭 명시해야 함

재귀함수는 스택 자료구조와 동일함

스택 자료구조를 활용해야 하는 상당수 알고리즘은 재귀 함수를 이용해서 간편하게 구현 가능 e.g. DFS

def factorial(n):
	if n<=1:
    	return 1
    return n*factorial(n-1)

 

 

 

'Algorithms' 카테고리의 다른 글

Binary Search  (0) 2023.03.07
Sorting  (0) 2023.03.06
Depth-First Search  (0) 2023.03.05
Brute Forcing  (0) 2023.03.03
Greedy  (0) 2023.03.02