오늘 공부할 내용
- 주간 수업 복습
- 알고리즘 과제
- 프로젝트 진행
- TiL 정리 및 Git & 블로그 업데이트
오늘 공부한 것 & 배운 내용
자료구조 / 알고리즘 day1 복습
-
수업 목표
- 기본적인 자료구조와 알고리즘을 이해하고 구현할 수 있다
- 초급 단계의 코딩 테스트 문제를 직접 해결할 수 있다
- 주어진 문제를 이해하고 어떤 자료구조와 알고리즘을 선택하는지 알수있어야 한다
-
자료구조
- 자료 : 현실 세계로부터 수집한 사실리나 개념의 값 또는 이들의 집합
- 점수는 사실, 개념값은 IQ, EQ같은 개념적인 것
- 개별 값 뿐 아니라 값들의 집합도 자료가 될수 있다
- 정보 : 자료를 가공한 것
- 자료구조 : 자료들의 모임, 자료 간의 관계, 자료에 적용할 수 있는 명령을 의미 한다
- 단순히 집합 뿐 아니라 자료간의 관계를 가진 모임이라고 봐야 적절하다
- 자료들의 순서로 관계지어진 리스트
- 부모와 자신관계인 트리 자료구조
- 자료간의 관계가 있기 때문의 자료의 추가 삭제 시 특별한 함수나 명령이 필요하게 된다
-
자료구조 특징
- 효율성(Efficiency) : 특정상황에서 효율성이 높아야한다(모든 상황에서 효율이 높은 자료구조는 없다)
- 추상화(Abstraction) : 인터페이스를 사용하듯 추상화된 자료구조가 있고 그자료구조 내부에 해당 자료구조를 구현하기 위한 동작들이 구현되어 있다
- 하지만 처음엔 원리만 이해하고 내부구현은 크게 개의치 않고 잘활요하면 된다.
- 재사용성(Reusabillity)
- 아주 특별한 상황에 엄청난 효율을 보여주는 자료구조보다는 어느정도 특정한 상황에 어느정도 효율이 높은 것이 더 좋은 자료구조가 된다
-
자료 구조의 필요성
- 프로그램에는 다양한 자료를 임시/영구 적으로 저장하여 사용한다
- 그렇기 때문에 상황에 따라 적절한 자료구조를 선택하여 사용해야 한다.
- 자료구조의 선택(자료를 어떻게 저장할지)는 프로그램에 다음과 같은 중대한 영향을 끼친다