# 자료구조와 알고리즘의 이해
# 자료구조와 알고리즘이란?
# 자료구조란?
- 용어: 자료구조, 데이터 구조, data structure
- 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미
- 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를구조화해야 함
- 어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라짐
# 효율적으로 데이터를 관리하는 예
- 우편번호: 5자리 우편번호로 국가의 기초구역을 제공
- 5자리 우편번호에서 앞 3자리를 시, 군, 자치구를 표기, 뒤 2자리ᅟᅳᆫ 일련번호로 구성
- 학생 관리: 학년, 반, 번호를 학생에게 부여해서, 학생부를 관리
- XX학년, X반, X번 학생
- 만약 위 관리 기법이 없다면 3000명 학생 중 특정 학생을 찾기 위해, 전체 학생부를 모두 훑어야 함
# 대표적인 자료구조
- 배열 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등
현실 세계의 가장 대표적인 데이터 구조? - 사전
# 알고리즘이란?
- 용어: 알고리즘, algorithm
- 어떤 문제를 풀기 위한 절차/방법
- 어떤 문제에 대해, 특정한 ‘입력’을 넣으면, 원하는 ‘출력’을 얻을 수 있도록 만드는 프로그래밍
현실 세계의 가장 대표적인 알고리즘? - 요리 레시피
# 자료구조와 알고리즘이 중요한 이유
- 어떤 자료구조와 알고리즘을 쓰느냐에 따라, 성능이 천지차!
결국 프로그래밍을 잘 할 수 있는 기술과 역량을 익히고, 검증할 수 있음
# 자료구조/알고리즘, 그리고 파이썬
- 어떤 언어로든 자료구조/알고리즘 익힐 수 있음
- 이전에는 무조건 C or C++로만 작성하도록 하는 경우가 많았음
- 최근에는 언어로 인한 제약/평가는 없어짐
- 가장 쉽고 빠르게 자료구조/알고리즘을 익힐 수 있는 언어: 파이썬
현업에서도 파이썬은 많이 사용됨
~나는 자바를 더 많이 쓴다~
# 강의 준비
- 파이썬/주피터 노트북 설치 필요