데이터구조
- 아래 2가지는 프로그램의 중요한 축
- 값을 어떤 구조로 보여줄꺼냐
- 그것을 어떤 식으로 처리할꺼냐 : 알고리즘
- 컴공에서 1년정도 공부하는 내용
- 필수적인 것
- List, Array, Stack, Queue
- 장점/단점 파악해서 선택
- 공간복잡도 : 메모리를 얼마나 쓰냐
- 시간복잡도 : CPU를 얼마나 쓰냐
- 위 둘 중에 하나를 선택해야 한다.
- 코드를 보고 공간을 많이 쓰는지, 시간을 많이 쓰는지 파악할 수 있어야 한다.
- 알고리즘은 시간을 많이 쓰고, 데이터구조는 공간을 많이쓴다.
- 핵심적인 로직 리스트를 구현하는 거...
추천한 공부꺼리
- LinkedList가 Array랑 다른 점이 뭔지, 스택,큐랑은 다른 점이 뭔지도 찾아 보아라
- LRU cache를 공부해보면 좋다.
- 인접 학습 : hashmap, tree, node기반 자료구조
테스트코드
- 내가 만든 코드 제대로 동작하는 지 확인하는 코드
- 경우의 수를 만들어서 확인해봐야 한다. : 그런 코드를 작성하는 것도 중요
- 라이브러리를 쓸 필요는 없다.
- 프로젝트 설계할 때 뭔가 간단하게 그림을 그리는 툴
- https://draw.io
- Miro, Figma
공부 자료
- 자료구조 무료강좌(자바 구현)
https://www.boostcourse.org/cs204 - 클래스 노트 살펴보기
- 시간복잡도
- 유리한 자료구조
- 설계에 대한 내용
무엇을, 어디까지 했는지, 어려운 점은 무엇인지
- 22.1.10
- 코드 짤 때 생각의 흐름 정리가 안되었다.
- 세세하게 문서화 하고 코딩하라고 했는데 그게 잘 안됐다.
- 로직 자체를 짜는 것이 너무 익숙하지 않아 느리다.
코딩해볼 것
- 제한시간 30분으로만 정하고, Stack의 pop 메서드를 구현한다면?
- 과제 수행을 위한 세부 작업 분리
- 사용자를 고려한 class, 메서드 분리
- 문법 활용 정도
- Q1. Stack의 pop 메서드를 구현한다면? 주요 체크포인트
- 세부 작업 1. 경계값 체크
- 세부 작업 2. 개선할 부분 점검 : java 패키지의 Stack은 대표적으로 알려진 잘못 디자인된 클래스
- 세부 작업 3. 기능 구현 및 동작 확인
- Stack 클래스 구현을 위한 interface 작성, interface 없이 클래스만 만들어도 괜찮습니다.
다른 사람의 코드 보기
- 제네릭으로 구현한 부분 코드 보기
댓글