Backend/C 32

컴퓨터의 기본, Stack

흠.. 정말 기본적이지만 중요한 개념..스택에 대해서 정리를 해보았다. 스택은 데이터를 아래서부터 차곡차곡 쌓고, 꺼낼 떄는 위에서 부터 꺼내는 Last In First Out 형식의 데이터 구조이다. 자료를 넣는 것을 PUSH,꺼내는 것을 POP이라고 하며, PUSH 및 POP을 할때 마다 스택 포인터의 값이 변한다. #include #define MAX 100 int stack[MAX]; //스택 int stack_pointer = 0; //스텍 포인터 int push(int); int pop(int*); int main(void){ int c, n, num=0; while(num != 3){ printf("1.Input 2.Output 3.Exit : "); scanf("%d", &num); swi..

Backend/C 2012.04.12

몇 가지 간단한 math 함수 사용하기

1. abs 함수 원형 int abs(int num); 기능 : num 의 절대값을 구하여 리턴한다. 헤더 : math.h , stdlib.h 예) 1 : #include 2 : #include 3 : 4 : void main(){ 5 : int a, b; 6 : a = -4; 7 : b = -4; 8 : printf("a = %d, b = %d\n", a, b); 9 : 10 : printf("a = %d, b = %d\n", a, abs(b)); 11 : } 결과) 비슷한 기능을 가진 함수로는 fabs, labs 등이 있다. 2. ceil 함수 원형 double ceil(double num); 기능 : num의 소숫점 자리를 올림하여 리턴한다 헤더 : math.h 예) 1 : #include 2 : ..

Backend/C 2012.04.12

Dynamic Programming

* Matrix Chain Multiplication(행렬 체인 곱) -행렬 곱 문제를 해결하는 알고리즘 -괄호 묶는 방법의 수 세기 Step 1 : The Struct of an Optimal Parenthesization ( 최적 괄호 묶기의 구조) 최적 부분 구조를 찾은 뒤, 부분 문제에 대한 최적해를 그 문제에 대한 최적해를 구성하는 데 사용. -A[i]A[i+1]......A[j]의 곱 A[i...j] 를 계산할 경우,(A[i] 는 행렬), 이들의 괄호 묶는 방법의 결과는 어떤 정수 k(i

Backend/C 2012.04.12

최대 공약수 구하기

유클리드 호제법 1. 두 정수 m, n(m>n)이 있을 때, m과 n의 최대공약수는 m-n과 n의 최대공약수와 같다. ⓐm과 n이 틀리면 다음을 반복한다. ⓑm>n이면 m=m-n, 아니면 n=n-m이다. ⓒm또는 n이 구하고자 하는 최대공약수이다. #include int main(void) { int a, b, m, n; printf("Insert 2 numbers: "); scanf("%d %d" , &a, &b); m = a; n=b; while(m!=n){ if(m>n) m= m-n; else n=n-m; } printf("최대공약수 : %d\n", m); return 0; } 2. m과 n의 차이가 클 경우 뺄셈(m-n) 대신에 나머지(m%n)을 이용하는 방법 #include int main(vo..

Backend/C 2012.04.12

수치 연산 함수 사용하기

수치 연산 함수 사용하기 1 : #include 2 : #include 3 : void main() 4 : { 5 : double x; 6 : printf("Enter a number: "); 7 : scanf("%lf", &x); 8 : printf("\n\nOriginal value : %lf", x); 9 : printf("\nCeil : %lf", ceil(x)); //전달된 인수보다 작지 않은 범위 내에서 최소의 정수값을 돌려준다 10 : printf("\nFloor : %lf.", floor(x)); // 전달된 인수보다 크지 않은 범위내에서 최대의 정수값을 돌려준다 11 : if(x >= 0) 12 : printf("\nSquare root : %lf", sqrt(x)); // 전달된 인수의..

Backend/C 2012.04.12

검색과 정렬

1. bsearch()를 이용한 검색 void *bsearch(void *key, void *base, size_t num, size_t width, int(*cmp)(void *element1, void *element2)) key : 검색하기 원하는 데이터 항목에 대한 포인터 base : 검색을 수행할 배열의 첫 번째 요소에 대한 포인터 num : 배열에 있는 요소의 수 width : 바이트 단위로 표현되는 각 요소의 크기 size_t : sizeof()연산자가 돌려주는 데이터형을 뜻하는 것으로 unsigned형 cmp : 비교 함수에 대한 포인터 2. qsort()를 사용한 정렬 void qsort(void *base, size_t num, size_t size, int (*cmp)(void *el..

Backend/C 2012.04.12
반응형