본문 바로가기
Computer Science/자료구조

자료구조 수업 정리

by devstep 2022. 2. 14.

데이터구조

  • 아래 2가지는 프로그램의 중요한 축
    • 값을 어떤 구조로 보여줄꺼냐
    • 그것을 어떤 식으로 처리할꺼냐 : 알고리즘
  • 컴공에서 1년정도 공부하는 내용
  • 필수적인 것
    • List, Array, Stack, Queue
  • 장점/단점 파악해서 선택
    • 공간복잡도 : 메모리를 얼마나 쓰냐
    • 시간복잡도 : CPU를 얼마나 쓰냐
    • 위 둘 중에 하나를 선택해야 한다.
    • 코드를 보고 공간을 많이 쓰는지, 시간을 많이 쓰는지 파악할 수 있어야 한다.
    • 알고리즘은 시간을 많이 쓰고, 데이터구조는 공간을 많이쓴다.
    • 핵심적인 로직 리스트를 구현하는 거...

추천한 공부꺼리

  • LinkedList가 Array랑 다른 점이 뭔지, 스택,큐랑은 다른 점이 뭔지도 찾아 보아라
  • LRU cache를 공부해보면 좋다.
  • 인접 학습 : hashmap, tree, node기반 자료구조

테스트코드

  • 내가 만든 코드 제대로 동작하는 지 확인하는 코드
    • 경우의 수를 만들어서 확인해봐야 한다. : 그런 코드를 작성하는 것도 중요
    • 라이브러리를 쓸 필요는 없다.
  • 프로젝트 설계할 때 뭔가 간단하게 그림을 그리는 툴

공부 자료

  • 자료구조 무료강좌(자바 구현)
    https://www.boostcourse.org/cs204
  • 클래스 노트 살펴보기
    • 시간복잡도
    • 유리한 자료구조
    • 설계에 대한 내용

무엇을, 어디까지 했는지, 어려운 점은 무엇인지

  • 22.1.10
    • 코드 짤 때 생각의 흐름 정리가 안되었다.
    • 세세하게 문서화 하고 코딩하라고 했는데 그게 잘 안됐다.
    • 로직 자체를 짜는 것이 너무 익숙하지 않아 느리다.

코딩해볼 것

  • 제한시간 30분으로만 정하고, Stack의 pop 메서드를 구현한다면?
    • 과제 수행을 위한 세부 작업 분리
    • 사용자를 고려한 class, 메서드 분리
    • 문법 활용 정도
  • Q1. Stack의 pop 메서드를 구현한다면? 주요 체크포인트
    • 세부 작업 1. 경계값 체크
    • 세부 작업 2. 개선할 부분 점검 : java 패키지의 Stack은 대표적으로 알려진 잘못 디자인된 클래스
    • 세부 작업 3. 기능 구현 및 동작 확인
    • Stack 클래스 구현을 위한 interface 작성, interface 없이 클래스만 만들어도 괜찮습니다.

다른 사람의 코드 보기

  • 제네릭으로 구현한 부분 코드 보기

댓글