동적계획법 DP(Dynamic Programming) 이란 어떤 문제를 풀기 위해 과거에 구한 해를 활용하는 방식의 알고리즘을 말한다. 말로 설명하면 이해하기 어려울 수 있기 때문에 가장 대표적인 예시 피보나치 수열을 살펴보겠다. 피보나치 수열은 첫항과 둘째항이 1, 1로 그다음 항부터는 앞의 두 항을 더하는 식이다. f(n) = f(n-1) + f(n-2) 수식으로 표현하면 위와 같다. 123456789101112131415161718192021222324#includeusing namespace std;int f[100]={0}; int fib(int n){ if(n==0) return 0; else if(n==1) return 1; else if(f[n]) return f[n]; else{ f[n]..
BFS(Breath First Search)는 말그대로 너비를 우선 탐색한다. DFS는 연결된 노드를 계속 들어가며 재귀호출하는 방식이었지만 BFS는 이와 달리 queue를 이용해서 루트노드에 연결되어있는 모든 노드를 다 탐색 후에 다음 깊이로 들어간다. 소스로 확인하면 다음과 같다. 1234567891011121314151617181920212223242526272829303132333435#include#includeusing namespace std;int map[10][10]={0};int visit[10]={0};queue q;int num; void bfs(int v){ cout
0.git이란? git공식 웹사이트에 접속하면 쉽게 받을 수 있다. https://git-scm.com/download/win git이란 버전관리 시스템으로 프로그래밍을 하며 그때그때 수정사항을 기록하고 버전을 저장하기 위해 사용한다. 1.git 사용법 및 명령어 github 사이트에서 회원가입 후에 원하는 repository를 생성한다. cmd창을 이용해 cd 명령어로 프로젝트 폴더에 들어간다. C:\>cd 프로젝트폴더 git init 명령어를 통해 git저장소를 만든다. github에서 만든 repository를 가져오기 위해 2가지 방법이 있다. 방법1. git clone 사용자명@호스트:/원격/저장소/경로 방법2. 원격서버 주소는 본인의 repository에 가면 확인할 수 있다. git remo..
위와같이 값이 알파벳으로 되어있는 트리를 만들 것이다. (출처 : 백준 1991번 트리순회) 1.노드 생성 이진트리를 구성하기 위해 node라는 구조체를 만든다. 1 2 3 4 5 struct node { node* left; node* right; char value; }; cs 구조체 안에는 위와 같이 실제값, 왼쪽노드를 가리키는 left포인터, 오른쪽 자식을 가리키는 right포인터로 구성된다. 2.트리 생성 새로운 node를 생성 할 때에는 1 2 3 4 5 node *tree; tree = (node*)malloc(sizeof(node)); tree->value = 'A'; tree->left = NULL; tree->right = NULL; cs 위와같이 포인터로 생성하고 동적할당을 해준다. ..
Tensorflow 공식 사이트 : https://www.tensorflow.org/install/ 0. GPU확인 시작메뉴에서 dxdiag를 실행하면 디스플레이 탭에서 자신의 그래픽카드를 확인할 수 있다. https://developer.nvidia.com/cuda-gpus 이곳에서 자신의 GPU가 CUDA를 지원하는지 확인한다. (Geforce GT 1030은 지원목록에 없지만 정상작동) 1. GPU 드라이버 설치 https://www.nvidia.co.kr/Download/index.aspx?lang=kr 자신의 GPU에 맞는 버전을 고르고 드라이버를 설치한다. 2. CUDA Toolkit설치 https://developer.nvidia.com/cuda-90-download-archive?targe..
DFS (Depth First Search) 깊이 우선탐색으로 말 그대로 탐색할 수 있는 만큼 깊게 들어가 순차적으로 탐색하는 방법이다. 아래와 같은 그래프 형태에서 한 시작점 노드(v)에서 연결된 모든 노드(w1,w2,w3)들 중 w1부터 탐색하는데 한번 w1를 탐색하면 해당노드(w1)에 연결된 노드들을 우선적으로 찾아 계속 연결된 노드를 탐색한다. w1의 탐색이 완료되면 다시 v기준으로 w2를 탐색하고 이를 반복한다. 이를 소스로 구현하면 다음과 같다.12345678910111213141516171819202122232425262728293031323334353637#includeusing namespace std;int maps[10][10];int visited[10]={0};int num;voi..
1. 군집의 개수 K를 정한다. 2. 데이터 중 랜덤으로 K개의 데이터를 뽑는다. 3. 모든 데이터를 대상으로 각 군집의 중심(앞서 뽑은 K개의 데이터)까지 가장 가까운 군집에 소속시킨다. 4. 분류된 군집의 데이터를 평균내어 새로운 중심을 설정한다. 5. 3~4과정을 반복한다. Tensorflow로 구현한 소스코드 : https://github.com/JeonJeongMin/tensorflow-examples/blob/master/Machine%20Learning/K_means.ipynb
손 인식을 하기 위해 YCrCb라는 색공간을 이용한다. Cr:133~173Cb:77~127 이 일반적인 살색 이라고 한다. 1234567891011121314151617import cv2import numpy as np img = cv2.imread('./hand_sample.jpg') #YCrCb 변환ycrcb = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)#Cr:133~173, Cb:77~127mask_hand = cv2.inRange(ycrcb,np.array([0,133,77]),np.array([255,173,127])) cv2.imshow("Hands",mask_hand)cv2.imshow("Origin",img) cap.release()cv2.destroyAllWind..
우선 얼굴을 검출하기 위해 https://github.com/opencv/opencv/tree/master/data/haarcascades 위 github 에 들어가 frontalface_default.xml 파일을 받아온다. 12345678910111213141516171819202122232425262728import cv2import numpy as np cap = cv2.VideoCapture(0)cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) face_cascade = cv2.CascadeClassifier("./haarcascade/haarcascade_frontalface_default.xml") wh..
- Total
- Today
- Yesterday