학습 내용 요약
- 배열과 링크드리스트
- 이진탐색
- 재귀함수
1) 배열
(1) 정의
크기가 정해진 데이터의 공간으로, 같은 타입의 데이터들을 순차적으로 저장하는 자료구조
(2) 특징
2) 링크드리스트
(1) 정의
크기가 정해지지 않은 데이터의 공간으로, 데이터를 순차적으로 저장하는 자료구조
(2) 특징
head_node = Node(1)
next_node = Node(5)
next_node = head_node.next -> 노드 연결
(3) 구성요소
※ 파이썬의 리스트는?
파이썬에서는 기존의 배열과는 다른 '동적 배열'의 개념으로 리스트를 사용한다. 그래서 위에서 본 리스트와 배열과는 조금 다른 특징을 가진다. 이에 대해서는 따로 정리하기로 한다.
1) 정의
주어진 범위에서 특정 값을 추정할 때 반씩 범위를 줄이면서 탐색하는 방식 (ex. 업다운 게임). 연산량이 반씩 나눠지기 때문에 순차탐색보다 시간복잡도 면에서 효율적이다.
2) 사용법
1) 정의
재귀란 어떤 것을 정의할 때 자기 자신을 참조하는 것이다. 이를 적용시키면 재귀함수는 자기 자신을 호출하는 함수라고 부를 수 있다.
2) 사용 이유 및 목적
이 함수를 사용하는 이유는 반복적인 작업의 코드를 간결하고 효율성 있는 코드로 작성할 수 있기 때문이다. 예를 들면, 아래의 코드와 같다.
# 일반 반복문 함수
input = "토마토"
def is_palindrome(string):
n = len(string)
for i in range(n):
if string[i] != string[n-1-i]:
return False
return True
# 재귀함수 사용
def is_palindrome(string):
if len(string) <= 1:
return True
if string[0] != string[-1]:
return False
return is_palindrome(string[1:-1])
3) 기억할 것
어렵거나 완전히 이해 못한 내용
배열과 리스트에 대해 간단히 정리 및 비교해봤지만, 아직 정보가 부족한 부분이 많고, 파이썬의 리스트는 동적 배열이라는 특징이 있다고 하니 배열과 리스트의 특징에 대해 좀 더 찾아볼 필요가 있다.
이진탐색, 재귀함수 이 개념들은 생각보다 간단하지만, 실제로 문제를 풀 때는 어떻게 적용시킬 수 있을지 아직 잘 모르겠다. 알고리즘 문제를 좀 더 연습하자.
참고자료
https://velog.io/@hwi_chance/CS-Data-Structure-part.1-Array-and-List
https://velog.io/@ayoung0073/python-list
스파르타코딩클럽 자료구조,알고리즘 2주차 강의(항해99)