Algorithm 3

[ 개념 ] 20. 알고리즘의 분석(feat. 시간복잡도, 점근적 분석...)

> 알고리즘의 분석 알고리즘의 자원(resource) 사용량을 분석 자원이란 실행시간, 메모리, 저장장치, 통신 등 여기서는 실행시간의 분석에 대해서 다룬다. 시간복잡도 실행시간은 실행환경에 따라 달라짐 하드웨어, 운영체제, 언어, 컴파일러 등 실행시간을 측정하는 대신 연산의 실행 횟수를 카운트 연산의 실행 횟수는 입력 데이터의 크기에 관한 함수로 표현 데이터의 크기가 같더라고 실제 데이터에 따라서 달라짐 최악의 경우 시간복잡도(worst-case analysis) 평균 시간복잡도(average-case analysis) 점근적(Asymptotic) 분석 점근적 표기법을 사용 데이터의 개수 n → ∞ 일때 수행시간이 증가하는 growth rate로 시간복잡도를 표현하는 기법 Θ-표기, Ο-표기 등을 사용..

[ 개념 ] 08. 이미지 픽셀 세기( Recursion )

> Counting Cells in a Blob (Recursion 응용) 입력으로 Binary 이미지가 주어진다. 각 픽셀은 background pixel(흰색)이거나 혹은 imagepixel(파란색)이다. 서로 연결된 image pixel들의 집합을 Blob이라고 부른다. 상하좌우 및 대각방향으로도 연결된것을 Blob으로 간주한다. 따라서 위 그림에서는 총 4개의 Blob이 존재한다. 특정 좌표가 속한 Blob의 크기 count 입력 N * N 크기의 2차원 그리드(grid) 하나의 좌표 (x, y) 출력 픽셀 (x, y)가 포함된 blob의 크기 (x, y)가 어떤 blob에도 속하지 않는 경우에는 0 Recursive Thinking 현재 픽셀이 속한 Blob의 크기를 카운트하려면 현재 픽셀이 i..

[ 개념 ] 00. 회문판별

> 회문판별 회문은 유전자 염기서열 분석에서 많이 쓰인다 회문(palindrome)은 순서를 거꾸로 읽어도 제대로 읽은 것과 같은 단어와 문장을 말한다. #define _CRT_SECURE_NO_WARNINGS #include #include #include int main(){ char word[30]; // 단어 저장 배열 int length; // 문자열 길이 bool isPalindrome = true; // 회문 판별값을 저장할 변수, 초깃값 TRUE printf("단어 입력하세요: "); scanf("%s", word); length = strlen(word); // 0부터 문자열 길이의 절반만큼 반복 for(int i=0; i