DataStructure Essential

TaeWoo Lee / Kris·2022년 3월 31일
0

자료구조와 알고리즘 그리고 변수와 배열 그리고 메모리

  • 자료구조
    • 자료를 쉽게 관리하기 위해 다양한 구조로 묶은 것
  • 알고리즘
    • 컴퓨터에 지시하는 처리 절차
    • 그 처리의 대상이 되는 것이 데이터다.
    • 데이터의 처리를 실시하는 가장 기본적인 구조가 변수다.
    • 데이터가 메모리에 저장되어 사용된다.

데이터는 메모리에 저장된다.

  • 데이터 입력 / 데이터 가공 / 데이터 출력

  • -> 과정을 거치는 동안 데이터는 메모리라는 장치에 저장된다.

  • 컴퓨터는 알고리즘에서의 처리 명령에 따라 메모리에서 데이터를 꺼내 가공한 후 메모리에 저장하는 작업을 반복 한다. 우선 메모리의 구조를 간단하게 살펴보자

  • 변수에는 한계가 있다.

    • 1개의 변수에는 데이터 각 1개씩만 넣을 수 있다.
    • 이러한 변수의 한계를 넘어서기 위한 만덜어진 아이디어가 바로 배열이라고 불리는 구조이다
  • 배열의 구조

    • 배열은 여러 변수를 모아 관리하는 구조이다.
    • 배열을 사용하면 단지 한줄로 여러 변수를 동시에 선언하는 것과 똑같은 결과를 얻을 수 있다.
    • 배열은 변수 여러개가 연결된 형태로 되어있다. 여기서 배열 안의 각 변수를 요소라고 한다.
  • 연결리스트 / 정적배열 / 동적배열

    • 배열
      • 데이터를 입력/출력
      • add/delete/search

Big O 표기법(notation)

  • 시간 복잡도 : 얼마나 빠르게 실행되는지
  • 공간 복잡도 : 얼마나 많은 저장공간이 필요한지
  • 좋은 알고리즘 : 실행 시간이 짧고, 저장공간도 적게 쓰는 알고리즘
  • 둘다 만족?
    • 통상 둘다 만족하기는 어렵다
    • 시간과 공간은 반비례적인 경향이 있다.
    • 취사선택
      • 보편적으로 시간복잡도 우선시해서 프로그램 작성
      • 컴퓨터 성능 발달 메모리의 여유 공간이 아주 충분 공간복잡도 중요성 (예전보다는 낮아짐)
      • 알고리즘 시간복잡도 중심

시간복잡도

  • 빠르고 느린지는 시간보다는 단계가 얼마나 있는지? 단계를 더 적게 만들어서 복잡도를 줄여서 성능을 높이는 것을 목표
  • 동일한 결과를 내는데 1개의 스텝이 필요한 코드 10개 스템이 필요한 코드 중에 1개가 더 유리
  • 데이터양이 많을 경우 빠른 속도를 내는게 중요!
profile
일단 저지르자! 그리고 해결하자!

0개의 댓글