자료구조의 배경
- 프로그래밍이 생겨난 배경: 컴퓨터로 인간의 행동을 편하게 하기 위함이다.
- 자료구조는 컴퓨터 과학에 있어 전체적인 관점의 기초공사 개념이다.
- 자료구조의 시작: 대용량의 다양한 데이터를 효율적으로 처리하기 위해 자료구조라는 개념이 개발되었다.
- 효율적인 처리
- 자동화
- 빠른 계산
- 반복 내용 처리
- 여러 값을 한 번에 처리
- 값이 빠르게 변경되는 경우에 대한 처리
- 특정 변수에 대한 처리
- 특정 값을 다양한 형태로 보기를 원하는 경우
- 조건에 따른 처리
1 |
|
자료구조의 다양한 활용
- 자료구조를 체계적으로 정립하기 위해 프로그래밍 언어별로 다양한 자료형이 생겨났고, 파이썬에서는 리스트와 튜플을 통해 자료구조의 기본인 배열을 구현할 수 있게 되었다.
배열
- 컴퓨터 과학에 사용되는 기본적 용어이다.
- 하나의 변수에 여러개의 인덱스로 묶는 것이다.
- 파이썬에서는 배열을 리스트와 튜플로 구현하고 활용한다.
리스트
- 파이썬은 리스트 자료형이 자료구조의 연결 리스트로 기능을 지원한다.
- 리스트는 임의의 메모리(위치)에 자료를 동적으로 처리할 수 있다.
- 파이썬의 리스트는 자료구조의 배열과 연결리스트의 특징을 모두 갖고 있다.
- 배열의 특징: 인덱스 사용하여 노드에 접근 가능하다.
- 연결리스트의 특징: 인덱스 크기를 자유롭게 확장 가능하고 서로 다른 자료형을 노드로 가질 수 있다.
- 자료구조의 기본적인 의미: 자료를 쉽게 관리하기 위해 다양한 구조로 묶는 것이다.
자료구조와 효율성
빅오(Big-O) 표기법(notation)
- 알고리즘 실행 효율성에 대해 측정할 방법이 필요하다.
- 빅오표기법은 불필요한 연산을 제거하여 알고리즘 분석을 쉽게 할 목적으로 사용된다.
- 빅오표기법을 활용하여 알고리즘 효율을 확인할 수 있다.
- 빅오표기법은 해당 코드가 얼마나 수행되었는지(결과값을 출력하기 위한 연산을 얼마나 반복하였는지)에 따라 효율성을 확인한다.
- 빅오표기법은 데이터 입력값 크기에 따라 알고리즘 실행 속도의 변화를 설명하는 방법이다.
- 알고리즘 계산 복잡도 종류
- 시간 복잡도: 알고리즘을 활용해 얼마나 실행시간이 걸렸는지.
- 공간 복잡도: 문제 해결을 위해 얼마만큼 메모리 저장 공간이 필요한지.
- 하드웨어의 성능이 증가하면서 공간 복잡도보다, 소프트웨어의 성능인 시간 복잡도가 더 중요하다.
- 빅오표기법은 입력값 증가에 중점을 두고 대비하여 실행시간이 얼마나 길어지는지 설명한다.
- 빅오표기법만으로 성능을 예측할 수는 없다.