핵심단어
데이터구조, 알고리즘, 참조와 할당, 성능, 빅오표기법
학습목표
- 데이터를 활용하는 입장과 컴퓨터 내부동작에 대해 생각해보기
- 알고리즘 효율성에 대한 내용인 자료구조의 BIG O 및 복잡도 개념에 대해 배우기
WARM UP
데이터 구조와 알고리즘의 필요성
- 더 최적화된 코드를 만들기 위해
- 더 나은 개발자가 되기 위해
알고리즘
- 여러 개의 지시사항 EX) 지도 (최단 경로)
- 문제 해결을 위한 효율적인 코딩 절차
- 알고리즘의 필요성
데이터 구조
- 데이터는 AI를 움직이게 하는 기름과 같은 존재
- 어떤 상황에서 어떤 데이터 구조를 사용해야 하는 지 알아야한다
자료구조의 배경
자료구조를 배우는 과정
- 프로그래밍은 인간의 행동을 편하게 하기 위해 만들어졌다
- 효율성에 집중하기
- 자료구조 = 전체적인 관점의 기초공사
- 대용량의 다양한 데이터를 효율적으로 처리(저장)하기 위해 자료구조 개념 개발
- 효율적인 처리의 예
- 자동화, 빠른계산, 반복되는 내용 처리, 여러개의 값을 한 번에 처리, 특정 변수처리, 등
자료구조의 다양한 활용
- 파이썬에서는 리스트와 튜플을 통해 자료구조의 기본인 배열을 구현할 수 있게 됨
- 배열은 무엇인가?
- 컴퓨터 과학에서 사용되는 기본적인 용어
- 각각의 변수를 하나의 변수에 여러 개의 인덱스로 묶는 것
- 파이썬에서는 배열을 리스트와 튜플로 구현하고 활용
파이썬의 리스트와 자료구조의 리스트
-
파이썬은 리스트 자료형이 자료구조의 연결리스트로 기능을 지원한다
-
리스트는 임의이 메모리(위치)에 자료를 동적으로 처리할 수 있다
-
파이썬의 리스트는 자료구조의 배열과 연결리스트의 특징을 모두 가지고 있다
- 배열의 특징 : 인덱스를 사용해 노드에 접근 가능
- 연결리스트의 특징 : 인덱스 크기를 확장 가능, 서로 다른 자료형을 노드로 가질 수 있다.
파이썬의 리스트
- 자료구조의 기본은 배열이라 할 수 있고, 파이썬에서는 리스트와 튜플로 구현 핤수 있다
- 리스트와 튜플의 핵심은 인덱스를 사용하는 것
자료 구조와 효율성
Big O 표기법
- 알고리즘 실행 효율성에 대해 측정할 방법이 필요하다
- 빅오표기법을 활용하여 알고리즘 효율을 확인할 수 있다
- 빅오표기법을 활용하여 알고리즘 효율 확인
- 빅오 표기법은 해당 코드가 얼마나 수행 되었는지에 따라 효율성 확인
- 빅오표기법은 데이터 입력값 크기에 따라 알고리즘 실행 속도의 변화를 설명하는 방법
- 알고리즘 계산 복잡도 종류
- 시간 복잡도 : 알고리즘 활용시간이 얼마나 걸렸는지
- 공간 복잡도 : 문제해결을 위해 얼마만큼의 메모리 저장공간이 필요한지
- 하드웨어의 성능이 증가하면서 공간복잡도 보다, 시간복잡도가 더 중요해짐
https://jwoop.tistory.com/9