# Polynomial A(x) = 3x^20 + 2x^5 + 4 - a sum of terms(항), ax^e (x: variable, a: coeffiecient(계수), e: exponent(지수)) # Operations of Polynomial ADT - Zero(): 다항식을 0으로 만듦 ::= return 다항식, p(x) = 0 - IsZero(poly): 다항식이 0인지 검사 ::= if(poly) return FALSE else return True - Coef(poly, expon): 다항식에서 지수가 expon인 계수를 반환 - Lead_Exp(poly): 다항식에서 가장 큰 차수(지수의 값)를 반환 - Attach(poly, coef, expon): 계수가 coef이고 지수..
# 포인터 - 포인터: 메모리 주소를 값으로 갖는 변수 - 간접 참조를 통하여 원본 데이터를 복사하거나 공유할 수 있음 - 메모리 주소를 직접 다루기 때문에 잘못 사용할 경우 예기치 못한 상황으로 시스템이 다운되거나 문제가 발생할 수 있음 - 함수 간의 매개 변수 참조 전달(call by reference), 연결 리스트에서 동적 메모리 관리(dynamic memory management) 등에 사용됨 - *(asterisk)와 &(ampersand) 연산자 > *은 사용되는 위치에 따라 의미가 달라지며 포인터형 변수에만 적용 가능 → 아래 소스코드 (1), (2), (3), (4) 참고 > &는 모든 변수에 붙일 수 있는 주소 연산자 [코드] #include void main() { int i = 3,..
# 구조체 - 구조체는 자료형이 상이한 복수의 멤버들을 하나의 자료로 묶어 처리할 수 있는 복합 자료형 - 선언 위치: 전처리기와 main 사이 - 예약어: struct - 예시: 나이(age), 학년(grade), 전공(major) 세 개의 멤버를 갖는 학생(student) 구조체를 정의 // 구조체의 선언 1. 구조체의 이름을 줄 수 있음 struct student { int age; int grade; char major[20] }kim, lee; // 구조체의 선언 2. 구조체 이름을 생략하고 구조체 변수를 생성 struct { int age; int grade; char major[20]; }kim, lee; // 구조체의 선언 3. 구조체 변수명이 생략되어 선언된 경우 --> struct 키워..
# Huffman Coding Tree - 데이터 문자의 출현 빈도에 따라 가변 길이의 부호를 사용하는 압축 알고리즘 > 출현 빈도가 높은 문자가 짧은 부호로 변환됨으로써 전체 문장의 데이터 비트 수는 줄어들게 됨 - 장점: 공간의 효율성을 높일 수 있음 - 단점: 문장을 구성하는 문자의 빈도 횟수가 비슷하다면 크게 효율적이지 못함 - 문장 예시: "time and tide wait for no man" ① 각 문자의 출현 빈도를 출현 빈도 테이블로 나타냄 ② 각 문자를 출현 빈도에 따라 정렬함 ③ 각 문자와 출현 빈도를 계층적 자료구조 트리의 단말노드로 지정한 후 출현 빈도가 낮은 것부터 2개씩 짝짓는 과정을 합이 증가하는 순서로 반복 > 허프만 코딩트리를 사용하여 각 문자를 가변 길이 코드로 변환 >..
# 소수 판별 - 소수: 1과 자신 이외의 수로는 나누어지지 않는 수 [코드] int prime(int n) { if (n < 2) return 0; // n이 2보다 작으면 1이므로 소수가 아님 for (int i = 2; i < n; i++) { // 2부터 n-1까지의 수를 탐색 if (n % i == 0) return 0; // i로 나누어서 1이 되는 경우가 있다면 소수 X } return 1; } * n이 2인 경우에는 i