[알고리즘] 탐색 / 자료구조 / 재귀 함수

good_da22·2022년 2월 4일
0

python for coding test

목록 보기
3/10
post-thumbnail

탐색 알고리즘

탐색(Search)이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정
그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제가 주를 이룬다.
대표적인 탐색 알고리즘으로 DFS(깊이 우선 탐색)BFS(너비 우선 탐색)이 있다.

DFS와 BFS를 다루기 위해 기본 자료구조인 스택, 그리고 재귀함수에 대한 이해가 필요하다.

자료구조

자료구조(Data Structure)란 데이터를 표현하고 관리하기 위한 구조

자료구조를 다루기위한 고려 사항

삽입(Push) : 데이터를 삽입한다.
삭제(Pop) : 데이터를 삭제한다.

오버플로(Overflow)
특정 자료구조가 수용할 수 있는 데이터의 양이 가득 찬 상태에서 삽입 연산을 수행할 때 발생한다.
즉, 저장 공간을 벗어나 데이터가 넘펴흐를 때 발생

언더플로(Underflow)
데이터가 전혀 들어 있지 않은 상태에서 삭제 연산을 수행할 때 발생한다.

스택(Stack)

선입후출(First In Last Out) 구조 또는 후입선출(Last In First Out) 구조

파이썬에서 스택을 구현할 경우 별도의 라이브러리 사용 없이 기본 리스트에서 append()pop() 메서드를 통해 사용

append() : 리스트의 가장 뒤쪽에 데이터를 삽입
pop() : 리스트의 가장 뒤쪽에서 데이터를 추출

큐(Queue)

선입선출(First In First Out) 구조

파이썬에서 큐를 구현할 경우 from collections import deque을 통해 collections 모듈에서 제공하는 deque 자료구조를 사용
deque 자료구조는 스택과 큐의 장점을 모두 채택한 것으로 리스트 자료형에 비해 데이터 삽입과 추출의 속도가 효율적이며 queue 라이브러리를 이용하는 것 보다 간단하다.

append() : 리스트의 가장 뒤쪽에 데이터를 삽입
popleft() : 리스트의 가장 앞쪽에서 데이터를 추출

재귀 함수

재귀 함수(Recursive fuction)란 자기 자신을 다시 호출하는 함수

재귀 함수의 사용에 있어 종료 조건을 명시하지 않을 경우 함수가 무한 호출된다.
재귀의 최대 깊이를 초과하는 경우 오류 메시지를 출력

컴퓨터 내부에서 재귀 함수의 수행은 스택의 자료구조를 이용한다. 함수를 계속 호출했을 때 가장 마지막에 호출한 함수가 먼저 수행을 끝나야 그 앞의 함수 호출이 종료된다.

재귀 함수를 이용한 팩토리얼 연산

def factorial_recursive(n):
	if n <= 1: #종료 조건
    return 1
  return n*factorial_recursive(n-1)

참고

나동빈(2020).이것이 취업을 위한 코딩 테스트다 with 파이썬.한빛미디어

profile
dev blog

0개의 댓글