본문 바로가기
728x90

Quality control (Univ. Study)/Data structure9

자료구조론 과제(1) Array Stack 과제 ArrayStack.h #ifndef ARRAYSTACK_H #define ARRAYSTACK_H #include using namespace std; class StackEmpty { public: StackEmpty(const string& err) { } }; class StackFull { public: StackFull(const string& err) { } }; template class ArrayStack { enum { DEF_CAPACITY = 100 };// default stack capacity public: ArrayStack(int cap = DEF_CAPACITY);// constructor from capacity int size() const;/.. 2023. 2. 17.
ArrayStack(3) postfix notation transformation 중위표기식을 후위 표기식으로 변환하는 코드이고 ArrayStack(1)의 헤더 파일을 이용한다. #include #include "ArrayStack.h" using namespace std; //후위표기식 변환 함수 string postfix_transform(ArrayStack& oper_stack, string infix) { string ans;//결과를 담아둘 ans 문자열 선언 ArrayStack checker_stack; //음수가 입력된 경우 error 처리 for (const char& check : infix) {//범위기반 반복문 사용 if (check == '-') {//음수일 가능성이 존재하는 -기호 조사 if (checke.. 2022. 11. 20.
ArrayStack(2) stock_span 아래와 같이 n일수 만큼의 일련의 주식 시세표가 주여졌다고 가정했을 때, 특정일의 주가보다 작거나 같은 주가가 가장 길게 연속되는 날의 수를 조사하는 알고리즘이다. ArrayStack(1)글의 헤더파일을 이용한다. #include #include //vector STL #include "ArrayStack.h" using namespace std; //span을 computing하는 linear-time algorithm 함수 int computeSpans(vector p) { ArrayStack d;//빈 stack d 선언 int n = p.size();//integer n에 vector의 길이 대입 int h = 0;//계산용 인자 h를 0으로 초기화 int S[100];//각 .. 2022. 11. 19.
ArrayStack(1) 괄호 매칭 ArrayStack을 이용하여 괄호 매칭 시스템을 만들어보았다. //ArrayStack Header Source Code #ifndef ARRAYSTACK_H #define ARRAYSTACK_H #include using namespace std; class StackEmpty { public: StackEmpty(const string& err) { } }; class StackFull { public: StackFull(const string& err) { } }; template class ArrayStack { enum { DEF_CAPACITY = 100 };// default stack capacity public: ArrayStack(int cap = DEF_CAPACITY);/.. 2022. 11. 18.
자료구조론(5) Analysis of Algorithms 이전에 간단하게 복잡도 분석에 대해서 배웠으나 이제 본격적으로 알고리즘들을 분석하는 방법을 공부하였다. 대표적인 복잡도 분석 방법중 하나인 Big-O notation에 대한 개괄적인 설명이다. Big-O notation은 worst-case를 고려한 복잡도 분석법으로 복잡도 증가율의 상한(upper bound)를 나타낸다. Calculation 어떤 알고리즘을 7가지로 분류하기 위해 연산을 진행할 때는 기본적으로 Tight upper bound를 찾고자 진행한다. 예시를 통해 기본적인 연산 과정을 학습하였다. Ex1 Example: 2n + 10 is O(n) 2n+10 = 10 n >= 10/(c-2) Pick c=3 and n0 = 10 Ex2 Example:.. 2022. 10. 6.
자료구조론(4) Template 함수 template, 클래스 template이 존재한다. 함수나 클래스를 개별적으로 작성하지 않아도 template을 통해 원하는 자료형으로 상황에 맞추어 함수나 클래스를 이용할 수 있도록 한다. #include using std::endl; using std::cout; template T myAdd(T a, T b) { return a+b; } int main(void) { cout 2022. 10. 3.
자료구조론(3) 오버로딩 함수의 구별 -시그니쳐가 같은 함수는 하나만 정의 (동일한 클래스 내부) -시그니쳐=> 함수이름, 형식 매개 변수의 수와 자료 유형 함수 오버로딩 -동일한 이름의 함수를 중복정의하는 것 => 이름만 같고 인자의 개수와 타입은 다른것) -조건 => 매개 변수의 개수 혹은 타입이 일치하지 않아야함 => 호출할 함수를 매개변수의 정보까지 참조해서 호출 -mangling: func(int) => func_int로 변환해서 참조 디폴트 매개 변수 -전달되지 않은 인자를 대신하기 위한 기본 값이 설정되어 있는 변수 int addInteger(int x, int y) { return x + y; } double addDouble(double x, double y) { return x + y; } 오버라이딩 .. 2022. 9. 26.
자료구조론(2) 함수 호출 int main(void) { int sum; int a=4. b=5; sum = add(a,b); cout 2022. 9. 12.
자료구조론 기초(1) C++ c++의 설계 철학 -엄격한 타입 검사, 범용 언어, 효율적, 이식성 -여러 가지의 프로그래밍 스타일을 지원(절차 지향, 데이터 추상화, 객체 지향, 일반화) -프로그래머가 자유롭게 선택할 수 있도록 설계 -최대한 C와 호환 -플랫폼에 의존적이거나 일반적이지 않은 특징은 제거 c++의 특징 -클래스(class) => 클래스를 이용하여 하나의 객체의 속성과 동작들은 한곳으로 모아서 정의 -상속(inheritance) => 클래스를 상속받아서 기존의 코드를 재사용 -연산자 중복(operator overloading) => 대상에 따라서 동일한 연산자로 새로운 연산을 정의 -함수 중복(function overloading) => 매개 변수만 다르면 동일한 이름의 함수를 여러 개 만들 수 있음 -동적 메.. 2022. 9. 4.
728x90