개발 기록

개발 기록/Data Structure

세그먼트 트리(2021.03.27)

목차 세그먼트 트리 어떤 수들의 집합이 있다. 그 집합은 원소가 마구마구 변할 수 있다고 한다. 이 때, 그 집합의 부분합을 아주 빠르게 구하기 위해서 만들어진 구조이다. 예를 들어서.. 1, 5, 6, 7, 4, 8, 2, 3 이렇게 수가 있다고 하자. 우리가 이 수들에서 특정 범위의 합을 구하려면 어떻게 해야할까? 역시 제일 간단한 방법은 다 더하는 것이다. 3~6번째 원소를 더하면. 6+7+4+8 = 25 이렇게 다 더하는 경우 시간복잡도는 O(N)으로 작은 범위 내에서 보면 나쁠 수 있다. 하지만, 이 합을 원하는 곳이 많아서 수천, 수만명이 요구를 한다면?? 또, 이 데이터에 접근 가능한 사람이 많아서 계속해서 값이 바뀐다면?? 참으로 난감할 것이다. 데이터는 바꿔줄 수 있지만. 합을 계속 해서..

개발 기록/Data Structure

이중 우선순위 큐(2021.03.25)

목차 백준 7662번 이중 우선순위 큐. 우선순위는 큐에 들어가는 정수값 자체를 우선순위로 하는 이중 우선순위 큐이다. 최대힙과, 최소힙을 이용해서 구현을 해 보았다. 최대값을 제거할때는 최대힙에서 삭제연산을 하고, 삭제한 요소를 저장해둔다. 그리고 최소값을 제거할때 만약 제거하는 요소가 저장해둔 배열에 있다면, 한번더 삭제한다. void pop(heap *h, heap *h2, int num){ int temp; //최대값 삭제 if(num == 1){ temp = popM(h); for(int i = h->numsize-1; i > -1 ; i--){ if(temp == h->nums[i]){ temp = popM(h); h->nums[i] = h->nums[h->numsize--]; } } } //..

개발 기록/Google ML Bootcamp

구글 머신러닝 부트캠프 1주차(2/4)

목차 Neural Network Basics Binary Classification -> 이진 분류 뭐가 맞다 아니다 => 1, 0으로 나타낼 수 있는것을 구별하는것 이런 이진분류를 한번 해보도록 하자. 일단 첫번째로 입력과 출력이 필요하다. 이런 하나의 입력과 출력을 training set이라 하고 $$ (x, y) \to x \in \mathbb{R}^{nx}, y \in {1, 0}$$ 라고 말할 수 있다. 이진분류를 이미지로 나타내면 training set은 어떻게 구성될까? 먼저 이미지가 어떻게 표현되는지 알아야 한다. 이미지는 $$ n \times m$$행렬로 이루어져 있고 빨강, 초록, 파란색의 3원색이 각각 어떤 값을 갖고 있는지를 저장한다. 이를 훈련예제로 옮기면 각각의 행렬을 하나의 열..

개발 기록/Google ML Bootcamp

구글 머신러닝 부트캠프 1주차(1/4)

목차 Introduction Linear Regression 선형 회귀(linear Regression)는 다수의 데이터를 대표할 수 있는 직선을 만드는 것을 말한다. 예를 들어 집의 가격과 크기를 생각해보자. 아래의 그래프와 같이 보통 집의 크기가 크면, 집의 가격이 높아지는 경향이 있다 이 모두를 적당히 대표할 수 있는 직선을 하나 그을 수 있는데, 이것을 선형회귀라고 한다. 이런 직선을 그리는 함수를 집의 크기를 입력으로 받고 집의 가격을 출력으로 하는 Single Neuron이라고 한다. Supervised Learning 인공지능을 학습 시킬 때, 결과를 알려주고 학습을 시키는 지도학습이라는 기법이다. 지도학습은 Structed Data, Unstructed Data를 통해서 학습을 시키는데, ..

시유후
'개발 기록' 카테고리의 글 목록 (6 Page)