전체 글

programming, design
· algorithm
Blob에 대한 이해를 해보자. - 각 픽셀은 background pixel이거나, image pixel이다. - 서로 연결된 image pixel을 blob이라 한다. (이때 상하좌우, 대각방향으로 연결된 것을 모두 셈한다.) 만들 함수의 입,출력을 정하자. - 입력: N*N 크기의 2차원 그리드와 하나의 좌표 (x,y) - 출력: 픽셀 (x,y)가 포함된 blob의 크기. (이때, (x,y)가 어떤 blob에도 포함되지 않는 경우는 0을 반환한다.) recursion thinking 하면서 코드 대략 정하기 현재 픽셀이 이 속한 blob의 크기를 카운트하려면 현재 픽셀이 image colour이 아니라면 0을 반환한다 현재 픽셀이 image colour라면 먼저 현재 픽셀을 카운트한다 (count=1..
· algorithm
recursion을 응용하여 "미로찾기" class와 코드를 짜보자. 현재 위치에서 출구까지의 경로가 있기 위한 IDEA 1. 현재 위치가 출구여야 한다. 또는 2. 이웃한 셀들 중 하나에서 현재위치를 지나지 않고 출구까지 간다. 1. Decision Problem 답이 yes or no인 문제로 표현해보자. bool findPath(x, y) { if (x, y) is the exit return true; else for each neighbouring cell(X, Y) of(x, y) do if (X, Y) is on the pathway if findPath(X, Y) return true; return false; } -> 이 코드는 X,Y에서 인접한 x,y로 다시 갈 수 있기 때문에, 무한루..
· algorithm
순환적 알고리즘을 설계하기 위해선 2가지가 필요하다. 1. 적어도 하나의 base case(종료되는 case)가 있어야 한다. 2. 모든 case는 결국 base case로 수렴한다. * 추가로, 암시적(implicit) 매개변수를 명시적(explicit) 매개변수로 바꿔야한다! ->이번 포스팅은 명시적 매개변수로 표현하는 법에 대한 것이다. "순차 탐색"을 통해 두 매개변수의 차이점과 recursion의 응용을 알아보자. 암시적 매개변수? data[0]에서 data[n-1] 사이에서 target을 검색하는 코드이다. #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int data[6] = { 1,2,3,4,5,6 }; printf("%d", sea..
· algorithm
순환(재귀함수)를 이용한 예제를 알아보자. 1.문자열 길이 계산 *c++에서 substr함수는 substr(pos, len) 이다. //pos는 시작할 위치, len는 몇개를 추출할 건지를 뜻한다. #include #include using namespace std; //문자열 길이 계산 int length(string str); int main(void) { int result = length("ImET"); cout
· algorithm
resursion은 흔히 순환, 재귀로 불린다. - 무한루프에 빠지지 않으려면? 1. Base case: 적어도 하나의 recursion에 빠지지 않는 경우가 존재 -> 실제로 무한루프에 빠진 코드는 범위를 안 정해서 그런 경우가 많았다 2. Recursive case: recursion을 반복하다보면 결국 base case로 수렴해야 함 ->recursion은 범위의 기준이 되는 곳으로 가서 코드가 마무리되기 때문 - recursion의 예제를 알아보자. (1) 1~n까지의 합 #define _CRT_SECURE_NO_WANRNINGS #include int main(void) { printf("%d",func(4)); } int func(int n) { if (n == 0) return 0; else..
이티권
ET WORLD