🔥 Today


🔨 자료구조
  • Array 배열

    • 정적
  • List 단일연결리스트, 이중연결리스트

    • 동적
    • 싱글링크드리스트 : 노드안에 링크 1개, 단반향 진행 리스트
    • 더블링크드리스트 : 노드안에 링크 2개, 양방향 진행 리스트
    • 황형링크드리스트 : 마지막 노드가 첫번째 노드를 가르켜서 계속 진행할 수 있게 만들어진 리스트
  • Array vs List : 유리한 점 비교

    1. 인풋 사이즈 모를때, 메모리 할당 효율 : 어레이 < 리스트
    2. 데이터 하나당 추가적으로 소모되는 메모리 양 : 어레이 > 리스트 => 링크하나당 4바이트, 데이터가 많을 수록 리스트 불리
    3. 중간 데이터 추가, 삭제 효율성 : 어레이 < 리스트 => 1~100사이중 50을 삭제하는 경우 리스트 = 49노드와 51 노드를 바꾸기 어레이 = 51부터의 인덱스를 한칸씩 전부 땡겨와야함
  • Stack 스택

    • 메모리 안 데이터들을 효율적으로 관리할 수있게 도와주는 자료 참조 방식 중 하나
    • LIFO 마지막에 들어온 데이터가 가장 먼저 나가는 방식
    • 스택을 구현하는 대표적인 방법
    1. 정적 1차원 배열 : 구현 쉽다. But, 들어올 크기를 미리 알아야 한다.
    2. 동적 연결 리스트 : 들어올 크기를 몰라도 된다. But, 구현이 배열보다 어렵다. 메모리를 좀 더 사용해야한다.
    • 주요함수 : push, pop
    • top, peek : 제일 최근에 들어간 데이터, 최상위 데이터를 가리킨다.
  • 해시테이블

    • 데이터를 관리/유지하는 자료구조, 리소스를 이용하여 속도에 중점
    • 충돌대처 : chaining(같은 자리에 리스트 등을 이용해서 연결해서 같은 공간에 집어넣음), linear probing(해당 공간의 다음자리로 집어넣음) resizing(테이블이 할당된 공간을 다써서 테이블을 늘린다음 다시 재정렬하는것 )
    • 메모리 안 데이터들을 효율적으로 다루기위해 만들어진 데이터 자료 참조 방식 중 하나
    • FIFO : 제일 먼저 들어온 값이 제일 먼저 나가는 자료구조
    • 큐를 구현하는 대표적인 방법
    1. 정적 어레이 fixed array : 구현이 쉽다 But, 고정된 큐의 크기
    2. 동적 어레이 linked list : 자유로운 큐의 크기, But, 구현이 어렵다
    • 주요함수 : enqueue,dequeue
🔑 key point
  1. 순서가 보장되는지
  2. 중복된 데이터가 들어갈 수 있는지
  3. 검색할 때 얼마나 효율적인지
  4. 원하는 기능에 따라서 수정할 때 얼마나 효율적인지


🔨 알고리즘
  • 제한된 공간과 시간속에서 데이터를 어떻게 처리할 것인지 정의해놓은 로직 (= 주어진 인풋으로 정의된 계산을 수행하고 아웃풋, 결과값을 내는 것) (= 주어진 데이터를 검색 or 정렬 or 총점 을 구하는 등 계싼을 할 수 있음)

Big O

  • 동일한 알고리즘의 로직으로 인풋의 사이즈가 점점커질수록 시간이 얼마나 더 많이 걸리느냐를 정의한 시간 복잡도를 나타내고 표기하는 방법
🔑 key point
  1. 인풋의 사이즈가 커질수록 Big O가 어떻게 변화하는지
  2. 공간과 시간의 복잡도는 어떤지
  3. 어떤 자료구조를 이용해서 이 알고리즘을 쓰는게 좋은지


🔥 To Do


  • [ecommerce-website] ⏩
  • [부스트코스] project B
  • [Algorithm] javaScript 매일 1문제 이상 풀기
  • [부스트코스] CS 자료구조, 알고리즘 강의


  • [ByteDegree] React 7주차 - Redux, 리덕스 미들웨어 ✅
    • 7주차 Quiz : ~ 01/11 ✅
      • Mini Project / Part2 / 지출 기록 서비스 구현 : 12/21 ~ 01/04