본문 바로가기

전체 글13

연결 리스트(Linked List) vs 파이썬 리스트(List) 연결 리스트 각 노드가 한 줄로 연결되어 있는 자료 구조. 노드 = 데이터 + 포인터 포인터: 다음 노드의 메모리 주소를 가리키는 목적으로 사용됨. 각 노드의 포인터는 다음 혹은 이전 노드를 가리킴. 연결 리스트(Linked List) vs 배열(Array) 특정 위치에 데이터를 삽입하거나 삭제할 때. 연결 리스트: 단순히 연결을 끊거나 만들기만 하면 됨. 소요 시간: O(1) 배열: 해당 공간을 비워주거나 채우기 위해, 다른 데이터들도 하나씩 미루거나 당겨야 함. 소요 시간: O(N) 파이썬 리스트 지원 함수 Indexing: 리스트에서 특정 인덱스 값 얻기. arr[i] Storing: 리스트에서 특정 인덱스에 값 저장하기. arr[i] = x Append: 리스트의 가장 뒤에 값 추가하기. arr... 2023. 7. 13.
2. 배열 배열(Array) 컴퓨터의 메인 메모리(ram)에서 배열의 공간은 연속적으로 할당됨. 배열의 장점: Cache hit 가능성이 높음 → 조회가 빠름. ram은 크고 무거운 데이터 저장소이고 cache는 작고 빠른 데이터 저장소이다. 원하는 정보에 접근하기 위해서는 우선 cache에 그 정보가 있는지 확인한다. 정보가 있으면 cache에서 정보를 바로 가져오고(cache hit) 없으면(cache miss) ram에서 그 정보를 cache로 복사한 뒤에 정보를 가져온다. Cache hit이 되면 빠르게 데이터를 가져올 수 있다. 한편 ram에서 cache로 정보를 복사할 때 연속된 일정 크기만큼 모두 복사해 두는데, 배열은 ram에서 연속적으로 공간이 할당되어 있기 때문에 특정 배열의 인덱스에 접근할 때 .. 2023. 7. 13.
1. 자료 구조 개요 자료구조(Data Structure) 다수의 자료(data)를 담기 위한 구조. 데이터의 수가 많아질수록 효율적인 자료구조가 필요함. 불필요한 메모리와 계산 낭비를 줄일 수 있음. 자료구조의 종류 1. 선형 구조: 데이터가 일렬로 순차적으로 연결되어 있음. 배열(array), 연결 리스트(linked list), 스택(stack), 큐(queue) 2. 비선형 구조: 하나의 데이터 뒤에 다른 데이터가 여러 개 올 수 있음. 트리(tree), 그래프(graph) 자료구조와 알고리즘 효율적인 알고리즘을 작성하기 위해선 적절한 자료구조가 사용되어야 함. 프로그램을 작성할 때 자료구조와 알고리즘 모두 고려해야 함. 프로그램의 성능을 측정할 수 있는 방법 2가지. 시간 복잡도: 알고리즘에 사용되는 연산 횟수를 측.. 2023. 7. 11.
9. 최소 제곱법과 추세선 선형 회귀(Linear Regression) 주어진 데이터를 학습하여 가장 합리적인 선형 함수를 찾아내는 문제. 하나의 스칼라(실수)를 예측할 수 있다. 가설 함수(선형 함수 모델): f(x) = Wx + b 선형 회귀에서 학습: 모델(W, b)을 수정하면서 가장 합리적인 식을 찾는 것. 비용(손실, loss)을 최소화 작은 모델이 합리적인 모델. x는 scalar 혹은 벡터가 가능함. 최소제곱법(Least Square Method) 평균제곱오차(MSE)를 이용해 비용을 최소화하는 방법이다. m개의 데이터가 있을 때 cost는 아래와 같고, cost를 최소화하는 W, b를 찾는 것이 목표. 경사하강법 최소제곱을 얻는 방법 중 하나. Cost 함수를 W로 미분(기울기)했을 때 절댓값이 최소 → cost가 .. 2023. 7. 7.